1*323ac9c5SLi Feng Wang /************************************************************** 2*323ac9c5SLi Feng Wang * 3*323ac9c5SLi Feng Wang * Licensed to the Apache Software Foundation (ASF) under one 4*323ac9c5SLi Feng Wang * or more contributor license agreements. See the NOTICE file 5*323ac9c5SLi Feng Wang * distributed with this work for additional information 6*323ac9c5SLi Feng Wang * regarding copyright ownership. The ASF licenses this file 7*323ac9c5SLi Feng Wang * to you under the Apache License, Version 2.0 (the 8*323ac9c5SLi Feng Wang * "License"); you may not use this file except in compliance 9*323ac9c5SLi Feng Wang * with the License. You may obtain a copy of the License at 10*323ac9c5SLi Feng Wang * 11*323ac9c5SLi Feng Wang * http://www.apache.org/licenses/LICENSE-2.0 12*323ac9c5SLi Feng Wang * 13*323ac9c5SLi Feng Wang * Unless required by applicable law or agreed to in writing, 14*323ac9c5SLi Feng Wang * software distributed under the License is distributed on an 15*323ac9c5SLi Feng Wang * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*323ac9c5SLi Feng Wang * KIND, either express or implied. See the License for the 17*323ac9c5SLi Feng Wang * specific language governing permissions and limitations 18*323ac9c5SLi Feng Wang * under the License. 19*323ac9c5SLi Feng Wang * 20*323ac9c5SLi Feng Wang *************************************************************/ 21*323ac9c5SLi Feng Wang /** 22*323ac9c5SLi Feng Wang * 23*323ac9c5SLi Feng Wang */ 24*323ac9c5SLi Feng Wang package fvt.uno.sd.bullet; 25*323ac9c5SLi Feng Wang import static org.junit.Assert.*; 26*323ac9c5SLi Feng Wang import static testlib.uno.PageUtil.getDrawPageByIndex; 27*323ac9c5SLi Feng Wang import static testlib.uno.ShapeUtil.*; 28*323ac9c5SLi Feng Wang 29*323ac9c5SLi Feng Wang import org.junit.After; 30*323ac9c5SLi Feng Wang import org.junit.AfterClass; 31*323ac9c5SLi Feng Wang import org.junit.Before; 32*323ac9c5SLi Feng Wang import org.junit.BeforeClass; 33*323ac9c5SLi Feng Wang import org.junit.Test; 34*323ac9c5SLi Feng Wang import org.openoffice.test.common.FileUtil; 35*323ac9c5SLi Feng Wang import org.openoffice.test.common.Testspace; 36*323ac9c5SLi Feng Wang import org.openoffice.test.uno.UnoApp; 37*323ac9c5SLi Feng Wang 38*323ac9c5SLi Feng Wang import com.sun.star.beans.PropertyValue; 39*323ac9c5SLi Feng Wang import com.sun.star.beans.XPropertySet; 40*323ac9c5SLi Feng Wang import com.sun.star.container.XIndexReplace; 41*323ac9c5SLi Feng Wang import com.sun.star.drawing.XShape; 42*323ac9c5SLi Feng Wang 43*323ac9c5SLi Feng Wang import com.sun.star.lang.XComponent; 44*323ac9c5SLi Feng Wang 45*323ac9c5SLi Feng Wang import com.sun.star.style.NumberingType; 46*323ac9c5SLi Feng Wang import com.sun.star.uno.UnoRuntime; 47*323ac9c5SLi Feng Wang import testlib.uno.SDUtil; 48*323ac9c5SLi Feng Wang 49*323ac9c5SLi Feng Wang /** 50*323ac9c5SLi Feng Wang * 1. New a SD 51*323ac9c5SLi Feng Wang 2. Insert some text 52*323ac9c5SLi Feng Wang 3. Set bullet on 53*323ac9c5SLi Feng Wang 4. Change the bullet color and bullet size 54*323ac9c5SLi Feng Wang 5. save/close/reopen and then check the bullet color and size 55*323ac9c5SLi Feng Wang * 56*323ac9c5SLi Feng Wang */ 57*323ac9c5SLi Feng Wang public class CheckBulletStyle { 58*323ac9c5SLi Feng Wang 59*323ac9c5SLi Feng Wang private static final UnoApp app = new UnoApp(); 60*323ac9c5SLi Feng Wang 61*323ac9c5SLi Feng Wang private XComponent m_xSDComponent = null; 62*323ac9c5SLi Feng Wang private String m_filePath = null; 63*323ac9c5SLi Feng Wang // private XShape m_xsecondTextBox = null; 64*323ac9c5SLi Feng Wang Object m_numberingRules = null; 65*323ac9c5SLi Feng Wang XPropertySet m_textProperty = null; 66*323ac9c5SLi Feng Wang XIndexReplace m_xReplace = null; 67*323ac9c5SLi Feng Wang 68*323ac9c5SLi Feng Wang @Before 69*323ac9c5SLi Feng Wang public void setUpDocument() throws Exception { 70*323ac9c5SLi Feng Wang m_filePath = Testspace.getPath("temp/CheckBulletStyle.odt"); 71*323ac9c5SLi Feng Wang if(FileUtil.fileExists(m_filePath)) 72*323ac9c5SLi Feng Wang { //load 73*323ac9c5SLi Feng Wang m_xReplace = load(); 74*323ac9c5SLi Feng Wang } 75*323ac9c5SLi Feng Wang else{ 76*323ac9c5SLi Feng Wang //create a sd 77*323ac9c5SLi Feng Wang m_xSDComponent = (XComponent) UnoRuntime.queryInterface(XComponent.class, app.newDocument("simpress")); 78*323ac9c5SLi Feng Wang Object firstPage = getDrawPageByIndex(m_xSDComponent, 0); 79*323ac9c5SLi Feng Wang Object secondTextBox = SDUtil.getShapeOfPageByIndex(firstPage, 1); 80*323ac9c5SLi Feng Wang XShape xsecondTextBox = (XShape)UnoRuntime.queryInterface(XShape.class, secondTextBox); 81*323ac9c5SLi Feng Wang m_textProperty = addPortion(xsecondTextBox, "Test Bullet Style", false); 82*323ac9c5SLi Feng Wang 83*323ac9c5SLi Feng Wang //get numberingRules 84*323ac9c5SLi Feng Wang m_numberingRules = m_textProperty.getPropertyValue("NumberingRules"); 85*323ac9c5SLi Feng Wang 86*323ac9c5SLi Feng Wang m_xReplace = (XIndexReplace) UnoRuntime.queryInterface( 87*323ac9c5SLi Feng Wang XIndexReplace.class, m_numberingRules); 88*323ac9c5SLi Feng Wang 89*323ac9c5SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 90*323ac9c5SLi Feng Wang props[0] = new PropertyValue(); 91*323ac9c5SLi Feng Wang props[0].Name = "NumberingType"; 92*323ac9c5SLi Feng Wang props[0].Value = new Short(NumberingType.CHAR_SPECIAL ); 93*323ac9c5SLi Feng Wang 94*323ac9c5SLi Feng Wang //set numberingType 95*323ac9c5SLi Feng Wang m_xReplace.replaceByIndex(0, props); 96*323ac9c5SLi Feng Wang m_textProperty.setPropertyValue("NumberingRules", m_numberingRules); 97*323ac9c5SLi Feng Wang //set numbering level to 0 98*323ac9c5SLi Feng Wang m_textProperty.setPropertyValue("NumberingLevel", new Short((short)0)); 99*323ac9c5SLi Feng Wang } 100*323ac9c5SLi Feng Wang } 101*323ac9c5SLi Feng Wang private XIndexReplace load() throws Exception{ 102*323ac9c5SLi Feng Wang m_xSDComponent = (XComponent) UnoRuntime.queryInterface(XComponent.class, 103*323ac9c5SLi Feng Wang app.loadDocument(m_filePath)); 104*323ac9c5SLi Feng Wang Object firstPage = getDrawPageByIndex(m_xSDComponent, 0); 105*323ac9c5SLi Feng Wang Object secondTextBox = SDUtil.getShapeOfPageByIndex(firstPage, 1); 106*323ac9c5SLi Feng Wang XShape xsecondTextBox = (XShape)UnoRuntime.queryInterface(XShape.class, secondTextBox); 107*323ac9c5SLi Feng Wang m_textProperty = getPortion(xsecondTextBox, 0); 108*323ac9c5SLi Feng Wang 109*323ac9c5SLi Feng Wang m_numberingRules = m_textProperty.getPropertyValue("NumberingRules"); 110*323ac9c5SLi Feng Wang 111*323ac9c5SLi Feng Wang XIndexReplace xReplace = (XIndexReplace) UnoRuntime.queryInterface( 112*323ac9c5SLi Feng Wang XIndexReplace.class, m_numberingRules); 113*323ac9c5SLi Feng Wang return xReplace; 114*323ac9c5SLi Feng Wang } 115*323ac9c5SLi Feng Wang 116*323ac9c5SLi Feng Wang @After 117*323ac9c5SLi Feng Wang public void tearDownDocument() { 118*323ac9c5SLi Feng Wang app.closeDocument(m_xSDComponent); 119*323ac9c5SLi Feng Wang } 120*323ac9c5SLi Feng Wang 121*323ac9c5SLi Feng Wang @BeforeClass 122*323ac9c5SLi Feng Wang public static void setUpConnection() throws Exception { 123*323ac9c5SLi Feng Wang app.start(); 124*323ac9c5SLi Feng Wang } 125*323ac9c5SLi Feng Wang 126*323ac9c5SLi Feng Wang @AfterClass 127*323ac9c5SLi Feng Wang public static void tearDownConnection() throws InterruptedException, 128*323ac9c5SLi Feng Wang Exception { 129*323ac9c5SLi Feng Wang app.close(); 130*323ac9c5SLi Feng Wang //remove the temp file 131*323ac9c5SLi Feng Wang FileUtil.deleteFile(Testspace.getPath("temp")); 132*323ac9c5SLi Feng Wang } 133*323ac9c5SLi Feng Wang 134*323ac9c5SLi Feng Wang @Test 135*323ac9c5SLi Feng Wang public void testBulletColor() throws Exception { 136*323ac9c5SLi Feng Wang //BulletColor, Integer 137*323ac9c5SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 138*323ac9c5SLi Feng Wang props[0] = new PropertyValue(); 139*323ac9c5SLi Feng Wang props[0].Name = "BulletColor"; 140*323ac9c5SLi Feng Wang props[0].Value = new Integer(255); 141*323ac9c5SLi Feng Wang 142*323ac9c5SLi Feng Wang m_xReplace.replaceByIndex(0, props); 143*323ac9c5SLi Feng Wang m_textProperty.setPropertyValue("NumberingRules", m_numberingRules); 144*323ac9c5SLi Feng Wang 145*323ac9c5SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 146*323ac9c5SLi Feng Wang app.closeDocument(m_xSDComponent); 147*323ac9c5SLi Feng Wang 148*323ac9c5SLi Feng Wang XIndexReplace xReplace = load(); 149*323ac9c5SLi Feng Wang PropertyValue[] proValues = (PropertyValue[])xReplace.getByIndex(0); 150*323ac9c5SLi Feng Wang assertEquals("name should be BulletColor", "BulletColor", proValues[11].Name); 151*323ac9c5SLi Feng Wang assertEquals("BulletColor should be 255(Blue)", new Integer(255), proValues[11].Value); 152*323ac9c5SLi Feng Wang } 153*323ac9c5SLi Feng Wang 154*323ac9c5SLi Feng Wang @Test 155*323ac9c5SLi Feng Wang public void testBulletSize() throws Exception { 156*323ac9c5SLi Feng Wang //BulletRelSize, default 45 157*323ac9c5SLi Feng Wang PropertyValue[] props = new PropertyValue[1]; 158*323ac9c5SLi Feng Wang props[0] = new PropertyValue(); 159*323ac9c5SLi Feng Wang props[0].Name = "BulletRelSize"; 160*323ac9c5SLi Feng Wang props[0].Value = new Short((short)200); 161*323ac9c5SLi Feng Wang 162*323ac9c5SLi Feng Wang m_xReplace.replaceByIndex(0, props); 163*323ac9c5SLi Feng Wang m_textProperty.setPropertyValue("NumberingRules", m_numberingRules); 164*323ac9c5SLi Feng Wang 165*323ac9c5SLi Feng Wang app.saveDocument(m_xSDComponent, m_filePath); 166*323ac9c5SLi Feng Wang app.closeDocument(m_xSDComponent); 167*323ac9c5SLi Feng Wang 168*323ac9c5SLi Feng Wang XIndexReplace xReplace = load(); 169*323ac9c5SLi Feng Wang PropertyValue[] proValues = (PropertyValue[])xReplace.getByIndex(0); 170*323ac9c5SLi Feng Wang assertEquals("name should be BulletRelSize", "BulletRelSize", proValues[12].Name); 171*323ac9c5SLi Feng Wang assertEquals("BulletRelSize should be 200%", new Short((short)200), proValues[12].Value); 172*323ac9c5SLi Feng Wang } 173*323ac9c5SLi Feng Wang } 174