Hi Ingrid, my code below seems to have no effect . am i missing something ?
Object object = xMCF.createInstanceWithContext( "com.sun.star.chart2.Axis", xContext); com.sun.star.chart2.XAxis xaxis = (com.sun.star.chart2.XAxis) UnoRuntime.queryInterface( com.sun.star.chart2.XAxis.class, object); // System.out.println(xaxis); ScaleData scaledata = new ScaleData(); IncrementData incData=new IncrementData(); incData.Distance=30; scaledata.IncrementData=incData; xaxis.setScaleData(scaledata); Ingrid Halama wrote: > > Hi, > > othman wrote: >> Hi Ingrid , >> Just discard my last email where i reported a bug about renaming sheets . >> actually i solved the issue . I was probably doing some mistake ,but now >> i >> get correct behavior . >> >> The most important thing for me now is to arrange the vertical grid >> labels >> in ranges of 1 month . >> >> 1-while thinking about the hack you described in last emails ; if i clear >> date cells that i don't need to display , will the corresponding vertical >> grid of empty cells be drawn in chart diagram ? >> > > Yes. > >> 2- we get the range sequence using code : >> com.sun.star.chart2.data.XDataSequence >> oSequence=oDataProv.createDataSequenceByRangeRepresentation(string_range); >> >> oSequence object has a getData() method that returns an array of Object[] >> i was thinking i can process array getData() and then set the new >> processed >> data to oSequence ; however oSequence doesn't have a setData() method . >> is >> it possible to assign an array of Object[] to a XDataSequence instance ? >> > > With the current implementation, there are two ways the chart has its > data: > 1) All the data comes from the parent document (calc or writer) > 2) The chart has all the data itself > There is no possibility to mix this so far. To move from state 1) to > state 2) use method createInternalDataProvider at the chart document. > >> i think this workaround could help me solve the x-axis label ranges >> without >> inserting a new dummy column. what you think ? >> >> it would really make me a happy man if you propose some other solution to >> make the vertical grid for x-axis dates more readable? >> > > If you do not insist on having exactly monthwise labels you can try to > play around with the IncrementData settings at the ScaleData at the x > axis: > http://api.openoffice.org/docs/common/ref/com/sun/star/chart2/IncrementData.html > http://api.openoffice.org/docs/common/ref/com/sun/star/chart2/ScaleData.html > > Try to set the Distance to 30 for example. Not sure whether these > settings will be saved and loaded properly as this is not a supported > feature for category axes so far. Just try it. The minor intervals can > be set with the SubIncrements: > http://api.openoffice.org/docs/common/ref/com/sun/star/chart2/SubIncrement.html > > Kind regards, > Ingrid > > >> thanks. >> >> >> >> >> >> othman wrote: >>> Thanks much Ingrid ,i'll try using this workaround . >>> As you can see this discussion may be useful to discover bugs and >>> improve >>> the charting component. >>> >>> I think i discovered another bug related to calc sheets renaming. here >>> is >>> the situation: >>> >>> 1-I open a calc spreadsheet with 3 initial sheets : (Sheet1 >>> ,Sheet2,Sheet3) >>> 2-programatically from java code i insert a new sheet ( Sheet4) >>> 3-manually from OO.o i rename (Sheet4) to (Sheet4_bis) (i did that >>> manually not from java code) >>> 4-when i query the array of sheet elements Names i got : (Sheet1 >>> ,Sheet2,Sheet3,Sheet4_bis, Sheet4) >>> >>> as you can see renaming (Sheet4) didn't removed this sheet name from >>> sheets array names :it only push it to end of sheets elemets array . >>> is this a bug ? how can i fix this issue ? i need when i rename a sheet >>> manually; the old sheet name (sheet4) should be replaced by new name and >>> sheet name (Sheet4) must be removed from sheets elements array. >>> >>> thanks much . >>> >>> othman. >>> >>> >>> Ingrid Halama wrote: >>>> Hi, >>>> >>>> That is a bug. You can do the following to work around: >>>> >>>> Query the Chart document for interface XMultiServiceFactory: >>>> http://api.openoffice.org/docs/common/ref/com/sun/star/lang/XMultiServiceFactory.html >>>> >>>> Use method createInstance with service name >>>> "com.sun.star.drawing.DashTable" to get the dash table use by the >>>> chart. >>>> http://api.openoffice.org/docs/common/ref/com/sun/star/drawing/DashTable.html >>>> >>>> Now insert your newly created dash to the table using the method >>>> insertByName. You will need to create a unique name for your dash here. >>>> >>>> Use this unique name and set it to the property "LineDashName" instead >>>> of setting the property "LineDash". >>>> >>>> Kind regards, >>>> Ingrid >>>> >>>> othman wrote: >>>>> Hi Ingid , >>>>> thanks for providing the hack ..it is never a good Idea to hack ; but >>>>> if >>>>> i >>>>> have no other choice then i'll try your method. >>>>> >>>>> there is a small issue i'm facing with the diagram vertical grid : i >>>>> want to >>>>> have a dashed line vertical grid . i wrote code to get this effect >>>>> (see >>>>> code >>>>> below) .it indeed displays the dashed line for vertical grid ..but the >>>>> problem is when i tried to play with the attributes of LineDash, it >>>>> always >>>>> gives me same dashed grid. >>>>> it seems that this line code is not executed : >>>>> xGridProp.setPropertyValue( >>>>> "LineDash", aDash ); >>>>> because if i comment this line code i get the same grid as if i don't >>>>> comment it . >>>>> >>>>> can you point me what is the issue with LineDash ? >>>>> >>>>> thanks . >>>>> >>>>> code: >>>>> >>>>> // x major grid >>>>> XPropertySet xGridProp = (XPropertySet) >>>>> UnoRuntime.queryInterface( >>>>> XPropertySet.class, >>>>> ( (XAxisXSupplier) UnoRuntime.queryInterface( >>>>> XAxisXSupplier.class, maDiagram )).getXMainGrid()); >>>>> >>>>> if( xGridProp != null ) >>>>> { >>>>> LineDash aDash = new LineDash(); >>>>> >>>>> aDash.Style = DashStyle.ROUND; >>>>> aDash.Dots = 2; >>>>> aDash.DotLen = 10; >>>>> aDash.Dashes = 1; >>>>> aDash.DashLen = 200; >>>>> aDash.Distance = 100; >>>>> >>>>> xGridProp.setPropertyValue( "LineColor", new Integer( >>>>> 0x000000 >>>>> )); >>>>> xGridProp.setPropertyValue( "LineStyle", LineStyle.DASH ); >>>>> xGridProp.setPropertyValue( "LineDash", aDash ); >>>>> xGridProp.setPropertyValue( "LineWidth", new Integer( 30 >>>>> )); >>>>> >>>>> } >>>>> >>>>> >>>>> Ingrid Halama wrote: >>>>>> Hi, >>>>>> >>>>>> othman wrote: >>>>>>> Hi Ingrid, >>>>>>> I believe the zooming feature might be beyond the scope of my >>>>>>> project >>>>>>> requirements now.. >>>>>> Ok. >>>>>> >>>>>>> anyway i wish if you can think adding the feature of scaling the >>>>>>> dates >>>>>>> x-axis values for candle charts : date objects are a widely used >>>>>>> data >>>>>>> type >>>>>>> and offering this feature of scaling date ranges would be a good >>>>>>> Idea. >>>>>>> >>>>>> I agree and I know. There are still a lot of issues of similar >>>>>> quality. >>>>>> Work is ongoing. >>>>>> >>>>>>> i have a small issue : >>>>>>> There is concern on the x-axis labels. I need to display only one >>>>>>> date >>>>>>> label for each month. For instance, if the chart starts from Dec 6 >>>>>>> 2007, >>>>>>> there should be labels of 12/6/2007, 1/6/2008, 2/6/2008, 3/6/2008, >>>>>>> 4/6/2008, >>>>>>> 5/6/2008 on x-axis. and other date labels should not be displayed on >>>>>>> x-axis >>>>>>> . how can i implement this ? >>>>>>> >>>>>> At the moment there exists no good/normal/acceptable way to do that >>>>>> (neither API nor user interface). You can only try to hack: >>>>>> >>>>>> Assuming you have a data point for each day (ordered in time) and you >>>>>> have a cell range containing all those days you can try the >>>>>> following: >>>>>> Copy all the dates to another location in the calc. Calculate which >>>>>> of >>>>>> the days you want to display and which not. Clear the cells with the >>>>>> dates that you do not want to display. Use the newly created >>>>>> cell-range >>>>>> (including all the cleared cells) for display of the categories. To >>>>>> use >>>>>> the new range for category display you need to do the following: >>>>>> Query the com::sun::star::chart2::Diagram for interface >>>>>> XCoordinateSystemContainer >>>>>> (http://api.openoffice.org/docs/common/ref/com/sun/star/chart2/XCoordinateSystemContainer.html). >>>>>> Get the first coordinate system: >>>>>> http://api.openoffice.org/docs/common/ref/com/sun/star/chart2/XCoordinateSystem.html. >>>>>> At the coordinate system use method getAxisByDimension(0,0) to get >>>>>> the >>>>>> primary x axis >>>>>> (http://api.openoffice.org/docs/common/ref/com/sun/star/chart2/XAxis.html). >>>>>> At the axis get the scale data by using method getScaleData >>>>>> (http://api.openoffice.org/docs/common/ref/com/sun/star/chart2/ScaleData.html). >>>>>> At the scale you will find a member "Categories" of type >>>>>> XLabeledDataSequence. You know already how to create such objects >>>>>> from >>>>>> cell ranges. Set the role of the values to "categories" in this case. >>>>>> Then set the new sequence to the Categories member and set the >>>>>> changed >>>>>> scale back to the axis (setScaleData). Be careful when playing around >>>>>> with the other scale settings as not all of them are saved and >>>>>> loaded, >>>>>> some do not have an effect at all so far. >>>>>> >>>>>> This hack has a problem. When the user changes the original dates >>>>>> after >>>>>> creation of the chart, the chart will not reflect those changes. >>>>>> Don't >>>>>> know whether that is important in your scenario. >>>>>> >>>>>> Kind regards, >>>>>> Ingrid >>>>>> >>>>>>> thanks. >>>>>>> >>>>>>> othman. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Ingrid Halama wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>> othman wrote: >>>>>>>>> Hi Ingrid, >>>>>>>>> as we all know the candle chart has two bars (black and white) >>>>>>>>> I guess that by changing the bar width, the chart can have a >>>>>>>>> larger >>>>>>>>> date >>>>>>>>> range displayed. >>>>>>>> No. >>>>>>>> >>>>>>>>> I am not sure whether this is the correct direction to fix >>>>>>>>> the x-axis scale problem . what you think about that ? and is it >>>>>>>>> possible >>>>>>>>> to >>>>>>>>> change the width of candle chart bars ? >>>>>>>> No, that is not the right direction to fix the problem. It is not >>>>>>>> possible to set a manual width to the candles. The width is >>>>>>>> calculated >>>>>>>> automatically dependent on the amount of data and the place >>>>>>>> provided. >>>>>>>> >>>>>>>> So again, I would suggest to change the data ranges on your zooming >>>>>>>> control. >>>>>>>> >>>>>>>>> thanks >>>>>>>>> >>>>>>>>> othman >>>>>>>>> >>>>>>>> Kind regards, >>>>>>>> Ingrid >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>>>>> >>>>>>>> >>>>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>>> >>>>>> >>>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>>> >>> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/discussing-com%3Asun%3Astar%3Achart2-API-tp19268400p19607771.html Sent from the openoffice - api dev mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]