1*28725c19SLi Feng Wang /************************************************************** 2*28725c19SLi Feng Wang * 3*28725c19SLi Feng Wang * Licensed to the Apache Software Foundation (ASF) under one 4*28725c19SLi Feng Wang * or more contributor license agreements. See the NOTICE file 5*28725c19SLi Feng Wang * distributed with this work for additional information 6*28725c19SLi Feng Wang * regarding copyright ownership. The ASF licenses this file 7*28725c19SLi Feng Wang * to you under the Apache License, Version 2.0 (the 8*28725c19SLi Feng Wang * "License"); you may not use this file except in compliance 9*28725c19SLi Feng Wang * with the License. You may obtain a copy of the License at 10*28725c19SLi Feng Wang * 11*28725c19SLi Feng Wang * http://www.apache.org/licenses/LICENSE-2.0 12*28725c19SLi Feng Wang * 13*28725c19SLi Feng Wang * Unless required by applicable law or agreed to in writing, 14*28725c19SLi Feng Wang * software distributed under the License is distributed on an 15*28725c19SLi Feng Wang * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*28725c19SLi Feng Wang * KIND, either express or implied. See the License for the 17*28725c19SLi Feng Wang * specific language governing permissions and limitations 18*28725c19SLi Feng Wang * under the License. 19*28725c19SLi Feng Wang * 20*28725c19SLi Feng Wang *************************************************************/ 21*28725c19SLi Feng Wang /** 22*28725c19SLi Feng Wang * 23*28725c19SLi Feng Wang */ 24*28725c19SLi Feng Wang package fvt.uno.sd.bullet; 25*28725c19SLi Feng Wang import static org.junit.Assert.*; 26*28725c19SLi Feng Wang import static testlib.uno.PageUtil.getDrawPageByIndex; 27*28725c19SLi Feng Wang import static testlib.uno.ShapeUtil.addPortion; 28*28725c19SLi Feng Wang import static testlib.uno.ShapeUtil.getPortion; 29*28725c19SLi Feng Wang 30*28725c19SLi Feng Wang import org.junit.After; 31*28725c19SLi Feng Wang import org.junit.AfterClass; 32*28725c19SLi Feng Wang import org.junit.Before; 33*28725c19SLi Feng Wang import org.junit.BeforeClass; 34*28725c19SLi Feng Wang import org.junit.Ignore; 35*28725c19SLi Feng Wang import org.junit.Test; 36*28725c19SLi Feng Wang import org.openoffice.test.uno.UnoApp; 37*28725c19SLi Feng Wang import org.openoffice.test.common.FileUtil; 38*28725c19SLi Feng Wang import org.openoffice.test.common.Testspace; 39*28725c19SLi Feng Wang 40*28725c19SLi Feng Wang import testlib.uno.SDUtil; 41*28725c19SLi Feng Wang 42*28725c19SLi Feng Wang import com.sun.star.beans.PropertyValue; 43*28725c19SLi Feng Wang import com.sun.star.beans.UnknownPropertyException; 44*28725c19SLi Feng Wang import com.sun.star.beans.XPropertySet; 45*28725c19SLi Feng Wang import com.sun.star.container.XIndexAccess; 46*28725c19SLi Feng Wang import com.sun.star.container.XIndexReplace; 47*28725c19SLi Feng Wang import com.sun.star.drawing.XDrawPage; 48*28725c19SLi Feng Wang import com.sun.star.drawing.XShape; 49*28725c19SLi Feng Wang import com.sun.star.lang.WrappedTargetException; 50*28725c19SLi Feng Wang import com.sun.star.lang.XComponent; 51*28725c19SLi Feng Wang import com.sun.star.style.NumberingType; 52*28725c19SLi Feng Wang import com.sun.star.text.HoriOrientation; 53*28725c19SLi Feng Wang import com.sun.star.uno.AnyConverter; 54*28725c19SLi Feng Wang import com.sun.star.uno.UnoRuntime; 55*28725c19SLi Feng Wang 56*28725c19SLi Feng Wang /** 57*28725c19SLi Feng Wang * @author LouQL 58*28725c19SLi Feng Wang * 59*28725c19SLi Feng Wang */ 60*28725c19SLi Feng Wang public class NumberingProperty { 61*28725c19SLi Feng Wang 62*28725c19SLi Feng Wang private static final UnoApp app = new UnoApp(); 63*28725c19SLi Feng Wang 64*28725c19SLi Feng Wang private XComponent m_xSDComponent = null; 65*28725c19SLi Feng Wang private String m_filePath = null; 66*28725c19SLi Feng Wang private XPropertySet m_xtextProps = null; 67*28725c19SLi Feng Wang 68*28725c19SLi Feng Wang @Before setUpDocument()69*28725c19SLi Feng Wang public void setUpDocument() throws Exception { 70*28725c19SLi Feng Wang m_filePath = Testspace.getPath("temp/NumberingProperty.odp"); 71*28725c19SLi Feng Wang // m_filePath = "F:/aa.odp"; 72*28725c19SLi Feng Wang if (FileUtil.fileExists(m_filePath)) {//load 73*28725c19SLi Feng Wang m_xtextProps = load(); 74*28725c19SLi Feng Wang } else {//new 75*28725c19SLi Feng Wang m_xSDComponent = (XComponent) UnoRuntime.queryInterface( 76*28725c19SLi Feng Wang XComponent.class, app.newDocument("simpress")); 77*28725c19SLi Feng Wang Object firstPage = getDrawPageByIndex(m_xSDComponent, 0); 78*28725c19SLi Feng Wang Object secondTextBox = SDUtil.getShapeOfPageByIndex(firstPage, 1); 79*28725c19SLi Feng Wang XShape xsecondTextBox = (XShape)UnoRuntime.queryInterface(XShape.class, secondTextBox); 80*28725c19SLi Feng Wang m_xtextProps = addPortion(xsecondTextBox, 81*28725c19SLi Feng Wang "test the property of Numbering bullets. There are two lines in this test", 82*28725c19SLi Feng Wang false); 83*28725c19SLi Feng Wang setNumberingType(m_xtextProps, NumberingType.ARABIC, (short)0); 84*28725c19SLi Feng Wang } 85*28725c19SLi Feng Wang } 86*28725c19SLi Feng Wang load()87*28725c19SLi Feng Wang private XPropertySet load() throws Exception{ 88*28725c19SLi Feng Wang m_xSDComponent = (XComponent) UnoRuntime.queryInterface(XComponent.class, 89*28725c19SLi Feng Wang app.loadDocument(m_filePath)); 90*28725c19SLi Feng Wang Object firstPage = getDrawPageByIndex(m_xSDComponent, 0); 91*28725c19SLi Feng Wang XDrawPage firstpage = getDrawPageByIndex(m_xSDComponent, 0); 92*28725c19SLi Feng Wang Object secondTextBox = SDUtil.getShapeOfPageByIndex(firstPage, 1); 93*28725c19SLi Feng Wang XShape xsecondTextBox = (XShape)UnoRuntime.queryInterface(XShape.class, secondTextBox); 94*28725c19SLi Feng Wang return getPortion(xsecondTextBox, 0); 95*28725c19SLi Feng Wang } 96*28725c19SLi Feng Wang 97*28725c19SLi Feng Wang @After tearDownDocument()98*28725c19SLi Feng Wang public void tearDownDocument() { 99*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 100*28725c19SLi Feng Wang //remove the temp file 101*28725c19SLi Feng Wang FileUtil.deleteFile(Testspace.getPath("temp")); 102*28725c19SLi Feng Wang } 103*28725c19SLi Feng Wang 104*28725c19SLi Feng Wang @BeforeClass setUpConnection()105*28725c19SLi Feng Wang public static void setUpConnection() throws Exception { 106*28725c19SLi Feng Wang app.start(); 107*28725c19SLi Feng Wang } 108*28725c19SLi Feng Wang 109*28725c19SLi Feng Wang @AfterClass tearDownConnection()110*28725c19SLi Feng Wang public static void tearDownConnection() throws InterruptedException, 111*28725c19SLi Feng Wang Exception { 112*28725c19SLi Feng Wang app.close(); 113*28725c19SLi Feng Wang 114*28725c19SLi Feng Wang } 115*28725c19SLi Feng Wang 116*28725c19SLi Feng Wang /*NumberingType: specifies the type of numbering 117*28725c19SLi Feng Wang * GUI entry:Numbering and Bullet dialog->Customize->Numbering 118*28725c19SLi Feng Wang * */ setNumberingType(XPropertySet textPros, short numberingType, short level)119*28725c19SLi Feng Wang private void setNumberingType(XPropertySet textPros, short numberingType, short level) throws Exception{ 120*28725c19SLi Feng Wang Object numberingRules = textPros.getPropertyValue("NumberingRules"); 121*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 122*28725c19SLi Feng Wang XIndexReplace.class, numberingRules); 123*28725c19SLi Feng Wang 124*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 125*28725c19SLi Feng Wang props[0] = new PropertyValue(); 126*28725c19SLi Feng Wang props[0].Name = "NumberingType"; 127*28725c19SLi Feng Wang props[0].Value = numberingType; 128*28725c19SLi Feng Wang 129*28725c19SLi Feng Wang xReplace.replaceByIndex(level, props); 130*28725c19SLi Feng Wang 131*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingRules); 132*28725c19SLi Feng Wang //set numbering level to 0 133*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingLevel", level); 134*28725c19SLi Feng Wang } 135*28725c19SLi Feng Wang 136*28725c19SLi Feng Wang 137*28725c19SLi Feng Wang 138*28725c19SLi Feng Wang @Test 139*28725c19SLi Feng Wang /* 140*28725c19SLi Feng Wang * Prefix: the prefix of the numbering symbol 141*28725c19SLi Feng Wang * GUI entry: Numbering and Bullet dialog->customize->Before 142*28725c19SLi Feng Wang * */ testPrefix()143*28725c19SLi Feng Wang public void testPrefix() throws Exception { 144*28725c19SLi Feng Wang String prefix = "Prefix"; 145*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 146*28725c19SLi Feng Wang 147*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 148*28725c19SLi Feng Wang XIndexReplace.class, numberingrules); 149*28725c19SLi Feng Wang 150*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 151*28725c19SLi Feng Wang props[0] = new PropertyValue(); 152*28725c19SLi Feng Wang props[0].Name = "Prefix"; 153*28725c19SLi Feng Wang props[0].Value = prefix; 154*28725c19SLi Feng Wang 155*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 156*28725c19SLi Feng Wang 157*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 158*28725c19SLi Feng Wang 159*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 160*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 161*28725c19SLi Feng Wang //reopen 162*28725c19SLi Feng Wang m_xtextProps = load(); 163*28725c19SLi Feng Wang 164*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 165*28725c19SLi Feng Wang 166*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 167*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 168*28725c19SLi Feng Wang 169*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 170*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 171*28725c19SLi Feng Wang { 172*28725c19SLi Feng Wang if(proValues2[i].Name.equals("Prefix")) 173*28725c19SLi Feng Wang { 174*28725c19SLi Feng Wang assertEquals("Prefix should be "+prefix, prefix, proValues2[i].Value); 175*28725c19SLi Feng Wang break; 176*28725c19SLi Feng Wang } 177*28725c19SLi Feng Wang } 178*28725c19SLi Feng Wang 179*28725c19SLi Feng Wang } 180*28725c19SLi Feng Wang 181*28725c19SLi Feng Wang @Test 182*28725c19SLi Feng Wang /* 183*28725c19SLi Feng Wang * Suffix: the suffix of the numbering symbol 184*28725c19SLi Feng Wang * GUI entry: Numbering and Bullet dialog->customize->After 185*28725c19SLi Feng Wang * */ testSuffix()186*28725c19SLi Feng Wang public void testSuffix() throws Exception { 187*28725c19SLi Feng Wang String suffix = "--"; 188*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 189*28725c19SLi Feng Wang 190*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 191*28725c19SLi Feng Wang XIndexReplace.class, numberingrules); 192*28725c19SLi Feng Wang 193*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 194*28725c19SLi Feng Wang props[0] = new PropertyValue(); 195*28725c19SLi Feng Wang props[0].Name = "Suffix"; 196*28725c19SLi Feng Wang props[0].Value = suffix; 197*28725c19SLi Feng Wang 198*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 199*28725c19SLi Feng Wang 200*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 201*28725c19SLi Feng Wang 202*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 203*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 204*28725c19SLi Feng Wang //reopen 205*28725c19SLi Feng Wang m_xtextProps = load(); 206*28725c19SLi Feng Wang 207*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 208*28725c19SLi Feng Wang 209*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 210*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 211*28725c19SLi Feng Wang 212*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 213*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 214*28725c19SLi Feng Wang { 215*28725c19SLi Feng Wang if(proValues2[i].Name.equals("Suffix")) 216*28725c19SLi Feng Wang { 217*28725c19SLi Feng Wang assertEquals("Suffix should be "+suffix, suffix, proValues2[i].Value); 218*28725c19SLi Feng Wang break; 219*28725c19SLi Feng Wang } 220*28725c19SLi Feng Wang } 221*28725c19SLi Feng Wang 222*28725c19SLi Feng Wang 223*28725c19SLi Feng Wang } 224*28725c19SLi Feng Wang 225*28725c19SLi Feng Wang @Test 226*28725c19SLi Feng Wang /* 227*28725c19SLi Feng Wang * StartWith: specifies the start value for the numbering. 228*28725c19SLi Feng Wang * GUI entry: Numbering and Bullet dialog->customize->Start At 229*28725c19SLi Feng Wang * */ testStartWith()230*28725c19SLi Feng Wang public void testStartWith() throws Exception { 231*28725c19SLi Feng Wang short startWith = 5; 232*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 233*28725c19SLi Feng Wang 234*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 235*28725c19SLi Feng Wang XIndexReplace.class, numberingrules); 236*28725c19SLi Feng Wang 237*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 238*28725c19SLi Feng Wang props[0] = new PropertyValue(); 239*28725c19SLi Feng Wang props[0].Name = "StartWith"; 240*28725c19SLi Feng Wang props[0].Value = startWith; 241*28725c19SLi Feng Wang 242*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 243*28725c19SLi Feng Wang 244*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 245*28725c19SLi Feng Wang 246*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 247*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 248*28725c19SLi Feng Wang //reopen 249*28725c19SLi Feng Wang m_xtextProps = load(); 250*28725c19SLi Feng Wang 251*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 252*28725c19SLi Feng Wang 253*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 254*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 255*28725c19SLi Feng Wang 256*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 257*28725c19SLi Feng Wang 258*28725c19SLi Feng Wang String sStartWith = Short.toString(startWith); 259*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 260*28725c19SLi Feng Wang { 261*28725c19SLi Feng Wang if(proValues2[i].Name.equals("StartWith")) 262*28725c19SLi Feng Wang { 263*28725c19SLi Feng Wang assertEquals("StartWith should be "+sStartWith, startWith, proValues2[i].Value); 264*28725c19SLi Feng Wang break; 265*28725c19SLi Feng Wang } 266*28725c19SLi Feng Wang } 267*28725c19SLi Feng Wang 268*28725c19SLi Feng Wang } 269*28725c19SLi Feng Wang 270*28725c19SLi Feng Wang 271*28725c19SLi Feng Wang 272*28725c19SLi Feng Wang 273*28725c19SLi Feng Wang @Test 274*28725c19SLi Feng Wang /*FirstLineOffset: specifies the offset between the beginning of the first line 275*28725c19SLi Feng Wang * and the beginning of the following lines of the paragraph. 276*28725c19SLi Feng Wang *GUI entry: paragraph dialog->Position tab->Width of numbering 277*28725c19SLi Feng Wang */ testFirstLineOffset()278*28725c19SLi Feng Wang public void testFirstLineOffset() throws Exception { 279*28725c19SLi Feng Wang Integer firstLineOffset = -4500; 280*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 281*28725c19SLi Feng Wang XIndexAccess xNum = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, 282*28725c19SLi Feng Wang numberingrules); 283*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 284*28725c19SLi Feng Wang XIndexReplace.class, xNum); 285*28725c19SLi Feng Wang 286*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 287*28725c19SLi Feng Wang props[0] = new PropertyValue(); 288*28725c19SLi Feng Wang props[0].Name = "FirstLineOffset"; 289*28725c19SLi Feng Wang props[0].Value = firstLineOffset; 290*28725c19SLi Feng Wang 291*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 292*28725c19SLi Feng Wang 293*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 294*28725c19SLi Feng Wang 295*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 296*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 297*28725c19SLi Feng Wang //reopen 298*28725c19SLi Feng Wang m_xtextProps = load(); 299*28725c19SLi Feng Wang 300*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 301*28725c19SLi Feng Wang 302*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 303*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 304*28725c19SLi Feng Wang 305*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 306*28725c19SLi Feng Wang 307*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 308*28725c19SLi Feng Wang { 309*28725c19SLi Feng Wang if(proValues2[i].Name.equals("FirstLineOffset")) 310*28725c19SLi Feng Wang { 311*28725c19SLi Feng Wang assertEquals("SymbolTextDistance should be "+Integer.toString(firstLineOffset), 312*28725c19SLi Feng Wang firstLineOffset, proValues2[i].Value); 313*28725c19SLi Feng Wang break; 314*28725c19SLi Feng Wang } 315*28725c19SLi Feng Wang } 316*28725c19SLi Feng Wang 317*28725c19SLi Feng Wang } 318*28725c19SLi Feng Wang 319*28725c19SLi Feng Wang @Test 320*28725c19SLi Feng Wang /*Leftmargin: specifies the left margin of the numbering 321*28725c19SLi Feng Wang * GUI entry: Numbering and Bullet dialog->Position->Indent = Leftmargin+FirstLineOffset 322*28725c19SLi Feng Wang */ testLeftMargin()323*28725c19SLi Feng Wang public void testLeftMargin() throws Exception { 324*28725c19SLi Feng Wang Integer leftMargin = 2000; 325*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 326*28725c19SLi Feng Wang XIndexAccess xNum = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, 327*28725c19SLi Feng Wang numberingrules); 328*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 329*28725c19SLi Feng Wang XIndexReplace.class, xNum); 330*28725c19SLi Feng Wang 331*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 332*28725c19SLi Feng Wang props[0] = new PropertyValue(); 333*28725c19SLi Feng Wang props[0].Name = "LeftMargin"; 334*28725c19SLi Feng Wang props[0].Value = leftMargin; 335*28725c19SLi Feng Wang 336*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 337*28725c19SLi Feng Wang 338*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 339*28725c19SLi Feng Wang 340*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 341*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 342*28725c19SLi Feng Wang //reopen 343*28725c19SLi Feng Wang m_xtextProps = load(); 344*28725c19SLi Feng Wang 345*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 346*28725c19SLi Feng Wang 347*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 348*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 349*28725c19SLi Feng Wang 350*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 351*28725c19SLi Feng Wang 352*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 353*28725c19SLi Feng Wang { 354*28725c19SLi Feng Wang if(proValues2[i].Name.equals("LeftMargin")) 355*28725c19SLi Feng Wang { 356*28725c19SLi Feng Wang assertEquals("Leftmargin should be "+Integer.toString(leftMargin), leftMargin, proValues2[i].Value); 357*28725c19SLi Feng Wang break; 358*28725c19SLi Feng Wang } 359*28725c19SLi Feng Wang } 360*28725c19SLi Feng Wang 361*28725c19SLi Feng Wang } 362*28725c19SLi Feng Wang @Ignore 363*28725c19SLi Feng Wang @Test 364*28725c19SLi Feng Wang /*symbolTextDistance: specifies the distance between the numbering symbol and the text of the paragraph. 365*28725c19SLi Feng Wang *GUI entry: ?? 366*28725c19SLi Feng Wang *This property cannot be set, it's always the same value as FirstLineOffset 367*28725c19SLi Feng Wang */ testSymbolTextDistance()368*28725c19SLi Feng Wang public void testSymbolTextDistance() throws Exception { 369*28725c19SLi Feng Wang Integer symbolTextDistance = -2000; 370*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 371*28725c19SLi Feng Wang XIndexAccess xNum = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, 372*28725c19SLi Feng Wang numberingrules); 373*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 374*28725c19SLi Feng Wang XIndexReplace.class, xNum); 375*28725c19SLi Feng Wang 376*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 377*28725c19SLi Feng Wang props[0] = new PropertyValue(); 378*28725c19SLi Feng Wang props[0].Name = "SymbolTextDistance"; 379*28725c19SLi Feng Wang props[0].Value = symbolTextDistance; 380*28725c19SLi Feng Wang 381*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 382*28725c19SLi Feng Wang // PropertyValue[] proValues = (PropertyValue[])xReplace.getByIndex(0); 383*28725c19SLi Feng Wang // for(int m=0;m<proValues.length;m++) 384*28725c19SLi Feng Wang // { 385*28725c19SLi Feng Wang // System.out.println(proValues[m].Name+"="+proValues[m].Value); 386*28725c19SLi Feng Wang // } 387*28725c19SLi Feng Wang 388*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 389*28725c19SLi Feng Wang 390*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 391*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 392*28725c19SLi Feng Wang //reopen 393*28725c19SLi Feng Wang m_xtextProps = load(); 394*28725c19SLi Feng Wang 395*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 396*28725c19SLi Feng Wang 397*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 398*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 399*28725c19SLi Feng Wang 400*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 401*28725c19SLi Feng Wang 402*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 403*28725c19SLi Feng Wang { 404*28725c19SLi Feng Wang if(proValues2[i].Name.equals("SymbolTextDistance")) 405*28725c19SLi Feng Wang { 406*28725c19SLi Feng Wang assertEquals("SymbolTextDistance should be "+Integer.toString(symbolTextDistance), 407*28725c19SLi Feng Wang symbolTextDistance, proValues2[i].Value); 408*28725c19SLi Feng Wang break; 409*28725c19SLi Feng Wang } 410*28725c19SLi Feng Wang } 411*28725c19SLi Feng Wang 412*28725c19SLi Feng Wang } 413*28725c19SLi Feng Wang 414*28725c19SLi Feng Wang /* 415*28725c19SLi Feng Wang * Ajust: adjusts the numbering (HoriOrientation_LEFT/RIGHT/CENTER) 416*28725c19SLi Feng Wang * GUI entry: Numbering and Bullet dialog->Position->Numbering alignment 417*28725c19SLi Feng Wang * */ 418*28725c19SLi Feng Wang @Test testAjustRight()419*28725c19SLi Feng Wang public void testAjustRight() throws Exception { 420*28725c19SLi Feng Wang Short ajust = HoriOrientation.RIGHT; 421*28725c19SLi Feng Wang setAjust(ajust); 422*28725c19SLi Feng Wang 423*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 424*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 425*28725c19SLi Feng Wang //reopen 426*28725c19SLi Feng Wang m_xtextProps = load(); 427*28725c19SLi Feng Wang 428*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 429*28725c19SLi Feng Wang 430*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 431*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 432*28725c19SLi Feng Wang 433*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 434*28725c19SLi Feng Wang 435*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 436*28725c19SLi Feng Wang { 437*28725c19SLi Feng Wang if(proValues2[i].Name.equals("Adjust")) 438*28725c19SLi Feng Wang { 439*28725c19SLi Feng Wang assertEquals("Ajust should be HoriOrientation.RIGHT", HoriOrientation.RIGHT, AnyConverter.toUnsignedShort(proValues2[i].Value)); 440*28725c19SLi Feng Wang break; 441*28725c19SLi Feng Wang } 442*28725c19SLi Feng Wang } 443*28725c19SLi Feng Wang } setAjust(Short ajust)444*28725c19SLi Feng Wang private void setAjust(Short ajust) throws Exception{ 445*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 446*28725c19SLi Feng Wang 447*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 448*28725c19SLi Feng Wang XIndexReplace.class, numberingrules); 449*28725c19SLi Feng Wang 450*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 451*28725c19SLi Feng Wang props[0] = new PropertyValue(); 452*28725c19SLi Feng Wang props[0].Name = "Adjust"; 453*28725c19SLi Feng Wang props[0].Value = ajust; 454*28725c19SLi Feng Wang 455*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 456*28725c19SLi Feng Wang 457*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 458*28725c19SLi Feng Wang } 459*28725c19SLi Feng Wang 460*28725c19SLi Feng Wang /* 461*28725c19SLi Feng Wang * Ajust: adjusts the numbering (HoriOrientation_LEFT/RIGHT/CENTER) 462*28725c19SLi Feng Wang * GUI entry: Numbering and Bullet dialog->Position->Numbering alignment 463*28725c19SLi Feng Wang * */ 464*28725c19SLi Feng Wang @Test testAjustCenter()465*28725c19SLi Feng Wang public void testAjustCenter() throws Exception { 466*28725c19SLi Feng Wang Short ajust = HoriOrientation.CENTER; 467*28725c19SLi Feng Wang setAjust(ajust); 468*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 469*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 470*28725c19SLi Feng Wang //reopen 471*28725c19SLi Feng Wang m_xtextProps = load(); 472*28725c19SLi Feng Wang 473*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 474*28725c19SLi Feng Wang 475*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 476*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 477*28725c19SLi Feng Wang 478*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 479*28725c19SLi Feng Wang String sAdjust = Short.toString(ajust); 480*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 481*28725c19SLi Feng Wang { 482*28725c19SLi Feng Wang if(proValues2[i].Name.equals("Adjust")) 483*28725c19SLi Feng Wang { 484*28725c19SLi Feng Wang assertEquals("Ajust should be HoriOrientation.CENTER", HoriOrientation.CENTER, AnyConverter.toUnsignedShort(proValues2[i].Value)); 485*28725c19SLi Feng Wang break; 486*28725c19SLi Feng Wang } 487*28725c19SLi Feng Wang } 488*28725c19SLi Feng Wang 489*28725c19SLi Feng Wang } 490*28725c19SLi Feng Wang 491*28725c19SLi Feng Wang /* 492*28725c19SLi Feng Wang * Ajust: adjusts the numbering (HoriOrientation_LEFT/RIGHT/CENTER) 493*28725c19SLi Feng Wang * GUI entry: Numbering and Bullet dialog->Position->Numbering alignment 494*28725c19SLi Feng Wang * */ 495*28725c19SLi Feng Wang @Test testAjustLeft()496*28725c19SLi Feng Wang public void testAjustLeft() throws Exception { 497*28725c19SLi Feng Wang Short ajust = HoriOrientation.LEFT; 498*28725c19SLi Feng Wang setAjust(ajust); 499*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 500*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 501*28725c19SLi Feng Wang //reopen 502*28725c19SLi Feng Wang m_xtextProps = load(); 503*28725c19SLi Feng Wang 504*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 505*28725c19SLi Feng Wang 506*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 507*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 508*28725c19SLi Feng Wang 509*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 510*28725c19SLi Feng Wang String sAdjust = Short.toString(ajust); 511*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 512*28725c19SLi Feng Wang { 513*28725c19SLi Feng Wang if(proValues2[i].Name.equals("Adjust")) 514*28725c19SLi Feng Wang { 515*28725c19SLi Feng Wang assertEquals("Ajust should be HoriOrientation.LEFT", 516*28725c19SLi Feng Wang HoriOrientation.LEFT, AnyConverter.toUnsignedShort(proValues2[i].Value)); 517*28725c19SLi Feng Wang break; 518*28725c19SLi Feng Wang } 519*28725c19SLi Feng Wang } 520*28725c19SLi Feng Wang } 521*28725c19SLi Feng Wang 522*28725c19SLi Feng Wang @Test 523*28725c19SLi Feng Wang /*BulletColor: contains the color for the symbol. 524*28725c19SLi Feng Wang * In SDK docs it says this is only valid if the numbering type is NumberingType::CHAR_SPECIAL. 525*28725c19SLi Feng Wang * But infact it also valid here 526*28725c19SLi Feng Wang *GUI entry: Bullet and Numbering dialog->Customize->Color 527*28725c19SLi Feng Wang */ testSymbolColor()528*28725c19SLi Feng Wang public void testSymbolColor() throws Exception { 529*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 530*28725c19SLi Feng Wang 531*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 532*28725c19SLi Feng Wang XIndexReplace.class, numberingrules); 533*28725c19SLi Feng Wang 534*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 535*28725c19SLi Feng Wang props[0] = new PropertyValue(); 536*28725c19SLi Feng Wang props[0].Name = "BulletColor"; 537*28725c19SLi Feng Wang props[0].Value = new Integer(255); 538*28725c19SLi Feng Wang 539*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 540*28725c19SLi Feng Wang 541*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 542*28725c19SLi Feng Wang 543*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 544*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 545*28725c19SLi Feng Wang //reopen 546*28725c19SLi Feng Wang m_xtextProps = load(); 547*28725c19SLi Feng Wang 548*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 549*28725c19SLi Feng Wang 550*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 551*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 552*28725c19SLi Feng Wang 553*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 554*28725c19SLi Feng Wang 555*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 556*28725c19SLi Feng Wang { 557*28725c19SLi Feng Wang 558*28725c19SLi Feng Wang if(proValues2[i].Name.equals("BulletColor")) 559*28725c19SLi Feng Wang { 560*28725c19SLi Feng Wang assertEquals("BulletColor should be Blue", 561*28725c19SLi Feng Wang new Integer(255), proValues2[i].Value); 562*28725c19SLi Feng Wang break; 563*28725c19SLi Feng Wang } 564*28725c19SLi Feng Wang } 565*28725c19SLi Feng Wang 566*28725c19SLi Feng Wang } 567*28725c19SLi Feng Wang 568*28725c19SLi Feng Wang @Test 569*28725c19SLi Feng Wang /*BulletRelSize: contains the size of the symbol relative to the high of the paragraph 570*28725c19SLi Feng Wang * In SDK docs it says this is only valid if the numbering type is NumberingType::CHAR_SPECIAL. 571*28725c19SLi Feng Wang * But in fact it also valid here 572*28725c19SLi Feng Wang *GUI entry: Bullet and Numbering dialog->Customize->Relative Size 573*28725c19SLi Feng Wang */ testSymbolSize()574*28725c19SLi Feng Wang public void testSymbolSize() throws Exception { 575*28725c19SLi Feng Wang Object numberingrules = m_xtextProps.getPropertyValue("NumberingRules"); 576*28725c19SLi Feng Wang 577*28725c19SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 578*28725c19SLi Feng Wang XIndexReplace.class, numberingrules); 579*28725c19SLi Feng Wang 580*28725c19SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 581*28725c19SLi Feng Wang props[0] = new PropertyValue(); 582*28725c19SLi Feng Wang props[0].Name = "BulletRelSize"; 583*28725c19SLi Feng Wang props[0].Value = new Short((short)100); 584*28725c19SLi Feng Wang 585*28725c19SLi Feng Wang xReplace.replaceByIndex(0, props); 586*28725c19SLi Feng Wang 587*28725c19SLi Feng Wang m_xtextProps.setPropertyValue("NumberingRules", numberingrules); 588*28725c19SLi Feng Wang 589*28725c19SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 590*28725c19SLi Feng Wang app.closeDocument(m_xSDComponent); 591*28725c19SLi Feng Wang //reopen 592*28725c19SLi Feng Wang m_xtextProps = load(); 593*28725c19SLi Feng Wang 594*28725c19SLi Feng Wang Object numberingrules2 = m_xtextProps.getPropertyValue("NumberingRules"); 595*28725c19SLi Feng Wang 596*28725c19SLi Feng Wang XIndexReplace xReplace2 = (XIndexReplace) UnoRuntime.queryInterface( 597*28725c19SLi Feng Wang XIndexReplace.class, numberingrules2); 598*28725c19SLi Feng Wang 599*28725c19SLi Feng Wang PropertyValue[] proValues2 = (PropertyValue[])xReplace2.getByIndex(0); 600*28725c19SLi Feng Wang 601*28725c19SLi Feng Wang for(int i=0;i<proValues2.length;i++) 602*28725c19SLi Feng Wang { 603*28725c19SLi Feng Wang if(proValues2[i].Name.equals("BulletRelSize")) 604*28725c19SLi Feng Wang { 605*28725c19SLi Feng Wang assertEquals("BulletRelSize should be 100%", 606*28725c19SLi Feng Wang new Short((short)100), proValues2[i].Value); 607*28725c19SLi Feng Wang break; 608*28725c19SLi Feng Wang } 609*28725c19SLi Feng Wang } 610*28725c19SLi Feng Wang 611*28725c19SLi Feng Wang } 612*28725c19SLi Feng Wang 613*28725c19SLi Feng Wang } 614