1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?>
2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3*b1cdbd2cSJim Jagielski<!--***********************************************************
4*b1cdbd2cSJim Jagielski *
5*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
6*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
7*b1cdbd2cSJim Jagielski * distributed with this work for additional information
8*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
9*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
10*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
11*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
14*b1cdbd2cSJim Jagielski *
15*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
16*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
17*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
19*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
20*b1cdbd2cSJim Jagielski * under the License.
21*b1cdbd2cSJim Jagielski *
22*b1cdbd2cSJim Jagielski ***********************************************************-->
23*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Samples" script:language="StarBasic">Option Explicit
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim JagielskiConst SAMPLES = 1000
26*b1cdbd2cSJim JagielskiConst STYLES = 1100
27*b1cdbd2cSJim JagielskiConst aTempFileName = &quot;Berend_Ilko_Tom_Stella_Volker.stc&quot;
28*b1cdbd2cSJim JagielskiPublic Const Twip = 425
29*b1cdbd2cSJim JagielskiDim oUcbObject as Object
30*b1cdbd2cSJim JagielskiPublic StylesDir as String
31*b1cdbd2cSJim JagielskiPublic StylesDialog as Object
32*b1cdbd2cSJim JagielskiPublic PathSeparator as String
33*b1cdbd2cSJim JagielskiPublic oFamilies  as Object
34*b1cdbd2cSJim JagielskiPublic aOptions(0) as New com.sun.star.beans.PropertyValue
35*b1cdbd2cSJim JagielskiPublic sQueryPath as String
36*b1cdbd2cSJim JagielskiPublic NoArgs()as New com.sun.star.beans.PropertyValue
37*b1cdbd2cSJim JagielskiPublic aTempURL as String
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim JagielskiPublic Files(100) as String
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski&apos;--------------------------------------------------------------------------------------
43*b1cdbd2cSJim Jagielski&apos;Miscellaneous Section starts here
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim JagielskiFunction PrepareForEditing(Optional ByVal oDocument)
46*b1cdbd2cSJim Jagielski&apos;This sub is called when sample documents are loaded (load event).
47*b1cdbd2cSJim Jagielski&apos;It checks whether the documents is read-only, in which case it
48*b1cdbd2cSJim Jagielski&apos;offers the user to create a new (writable) document using the original
49*b1cdbd2cSJim Jagielski&apos;as a template.
50*b1cdbd2cSJim JagielskiDim DocPath as String
51*b1cdbd2cSJim JagielskiDim MMessage as String
52*b1cdbd2cSJim JagielskiDim MTitle as String
53*b1cdbd2cSJim JagielskiDim RValue as Integer
54*b1cdbd2cSJim JagielskiDim oNewDocument as Object
55*b1cdbd2cSJim JagielskiDim mFileProperties(1) as New com.sun.star.beans.PropertyValue
56*b1cdbd2cSJim Jagielski	PrepareForEditing = NULL
57*b1cdbd2cSJim Jagielski        BasicLibraries.LoadLibrary( &quot;Tools&quot; )
58*b1cdbd2cSJim Jagielski	If InitResources(&quot;&apos;Template&apos;&quot;, &quot;tpl&quot;) then
59*b1cdbd2cSJim Jagielski		If IsMissing(oDocument) Then
60*b1cdbd2cSJim Jagielski      		oDocument = ThisComponent
61*b1cdbd2cSJim Jagielski		End If
62*b1cdbd2cSJim Jagielski		If oDocument.IsReadOnly then
63*b1cdbd2cSJim Jagielski			MMessage = GetResText(SAMPLES)
64*b1cdbd2cSJim Jagielski			MTitle = GetResText(SAMPLES + 1)
65*b1cdbd2cSJim Jagielski			RValue = Msgbox(MMessage, (128+48+1), MTitle)
66*b1cdbd2cSJim Jagielski			If RValue = 1 Then
67*b1cdbd2cSJim Jagielski				DocPath = oDocument.URL
68*b1cdbd2cSJim Jagielski				mFileProperties(0).Name = &quot;AsTemplate&quot;
69*b1cdbd2cSJim Jagielski				mFileProperties(0).Value = True
70*b1cdbd2cSJim Jagielski				mFileProperties(1).Name = &quot;MacroExecutionMode&quot;
71*b1cdbd2cSJim Jagielski				mFileProperties(1).Value = com.sun.star.document.MacroExecMode.USE_CONFIG
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski				oNewDocument = StarDesktop.LoadComponentFromURL(DocPath,&quot;_default&quot;,0, mFileProperties())
74*b1cdbd2cSJim Jagielski				PrepareForEditing() = oNewDocument
75*b1cdbd2cSJim Jagielski				DisposeDocument(oDocument)
76*b1cdbd2cSJim Jagielski			Else
77*b1cdbd2cSJim Jagielski				PrepareForEditing() = NULL
78*b1cdbd2cSJim Jagielski			End If
79*b1cdbd2cSJim Jagielski		Else
80*b1cdbd2cSJim Jagielski			PrepareForEditing() = oDocument
81*b1cdbd2cSJim Jagielski		End If
82*b1cdbd2cSJim Jagielski	End If
83*b1cdbd2cSJim JagielskiEnd Function
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski
87*b1cdbd2cSJim Jagielski&apos;--------------------------------------------------------------------------------------
88*b1cdbd2cSJim Jagielski&apos;Calc Style Section starts here
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim JagielskiSub ShowStyles
91*b1cdbd2cSJim Jagielski&apos;This sub displays the style selection dialog if the current document is a calc document.
92*b1cdbd2cSJim JagielskiDim TemplateDir, ActFileTitle, DisplayDummy as String
93*b1cdbd2cSJim JagielskiDim sFilterName(0) as String
94*b1cdbd2cSJim JagielskiDim StyleNames() as String
95*b1cdbd2cSJim JagielskiDim t as Integer
96*b1cdbd2cSJim JagielskiDim MaxIndex as Integer
97*b1cdbd2cSJim Jagielski        BasicLibraries.LoadLibrary(&quot;Tools&quot;)
98*b1cdbd2cSJim Jagielski	If InitResources(&quot;&apos;Template&apos;&quot;, &quot;tpl&quot;) then
99*b1cdbd2cSJim Jagielski    oDocument = ThisComponent
100*b1cdbd2cSJim Jagielski		If oDocument.SupportsService(&quot;com.sun.star.sheet.SpreadsheetDocument&quot;) Then
101*b1cdbd2cSJim Jagielski			ToggleWindow(False)
102*b1cdbd2cSJim Jagielski			oUcbObject = createUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;)
103*b1cdbd2cSJim Jagielski			oFamilies = oDocument.StyleFamilies
104*b1cdbd2cSJim Jagielski			SaveCurrentStyles(oDocument)
105*b1cdbd2cSJim Jagielski			StylesDialog = LoadDialog(&quot;Template&quot;, &quot;DialogStyles&quot;)
106*b1cdbd2cSJim Jagielski			DialogModel = StylesDialog.Model
107*b1cdbd2cSJim Jagielski			TemplateDir = GetPathSettings(&quot;Template&quot;, False, 0)
108*b1cdbd2cSJim Jagielski			StylesDir = GetOfficeSubPath(&quot;Template&quot;, &quot;wizard/styles/&quot;)
109*b1cdbd2cSJim Jagielski			sQueryPath = GetOfficeSubPath(&quot;Template&quot;, &quot;../wizard/bitmap/&quot;)
110*b1cdbd2cSJim Jagielski			DialogModel.Title = GetResText(STYLES)
111*b1cdbd2cSJim Jagielski			DialogModel.cmdCancel.Label = GetResText(STYLES+2)
112*b1cdbd2cSJim Jagielski			DialogModel.cmdOk.Label = GetResText(STYLES+3)
113*b1cdbd2cSJim Jagielski			Stylenames() = ReadDirectories(StylesDir, False, False, True,)
114*b1cdbd2cSJim Jagielski			MaxIndex = Ubound(Stylenames())
115*b1cdbd2cSJim Jagielski			BubbleSortList(Stylenames(),True)
116*b1cdbd2cSJim Jagielski			Dim cStyles(MaxIndex)
117*b1cdbd2cSJim Jagielski			For t = 0 to MaxIndex
118*b1cdbd2cSJim Jagielski				Files(t) = StyleNames(t,0)
119*b1cdbd2cSJim Jagielski				cStyles(t) = StyleNames(t,1)
120*b1cdbd2cSJim Jagielski			Next t
121*b1cdbd2cSJim Jagielski			On Local Error Resume Next
122*b1cdbd2cSJim Jagielski			DialogModel.lbStyles.StringItemList() = cStyles()
123*b1cdbd2cSJim Jagielski			ToggleWindow(True)
124*b1cdbd2cSJim Jagielski			StylesDialog.Execute
125*b1cdbd2cSJim Jagielski		End If
126*b1cdbd2cSJim Jagielski	End If
127*b1cdbd2cSJim JagielskiEnd Sub
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski
130*b1cdbd2cSJim JagielskiSub SelectStyle
131*b1cdbd2cSJim Jagielski&apos;This sub loads the specific styles from a style document and loads them into the
132*b1cdbd2cSJim Jagielski&apos;current document.
133*b1cdbd2cSJim JagielskiDim StylePath as String
134*b1cdbd2cSJim JagielskiDim NewStyle as String
135*b1cdbd2cSJim JagielskiDim Position as Integer
136*b1cdbd2cSJim Jagielski	Position = DialogModel.lbStyles.SelectedItems(0)
137*b1cdbd2cSJim Jagielski	If Position &gt; -1 Then
138*b1cdbd2cSJim Jagielski		ToggleWindow(False)
139*b1cdbd2cSJim Jagielski		StylePath = Files(Position)
140*b1cdbd2cSJim Jagielski	  	aOptions(0).Name = &quot;OverwriteStyles&quot;
141*b1cdbd2cSJim Jagielski 		aOptions(0).Value = true
142*b1cdbd2cSJim Jagielski		oFamilies.loadStylesFromURL(StylePath, aOptions())
143*b1cdbd2cSJim Jagielski		ToggleWindow(True)
144*b1cdbd2cSJim Jagielski	End If
145*b1cdbd2cSJim JagielskiEnd Sub
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim JagielskiSub SaveCurrentStyles(oDocument as Object)
149*b1cdbd2cSJim Jagielski&apos;This sub stores the current document in the user work directory
150*b1cdbd2cSJim Jagielski	On Error Goto ErrorOcurred
151*b1cdbd2cSJim Jagielski	aTempURL = GetPathSettings(&quot;Work&quot;, False)
152*b1cdbd2cSJim Jagielski	Dim aRightMost as String
153*b1cdbd2cSJim Jagielski	aRightMost = Right(aTempURL, 1)
154*b1cdbd2cSJim Jagielski	if aRightMost = &quot;/&quot; Then
155*b1cdbd2cSJim Jagielski		aTempURL = aTempURL &amp; aTempFileName
156*b1cdbd2cSJim Jagielski	Else
157*b1cdbd2cSJim Jagielski		aTempURL = aTempURL &amp; &quot;/&quot; &amp; aTempFileName
158*b1cdbd2cSJim Jagielski	End If
159*b1cdbd2cSJim Jagielski
160*b1cdbd2cSJim Jagielski	While FileExists(aTempURL)
161*b1cdbd2cSJim Jagielski		aTempURL=Left(aTempURL,(Len(aTempURL)-4)) &amp; &quot;_1.stc&quot;
162*b1cdbd2cSJim Jagielski	Wend
163*b1cdbd2cSJim Jagielski	oDocument.storeToURL(aTempURL, NoArgs())
164*b1cdbd2cSJim Jagielski	Exit Sub
165*b1cdbd2cSJim Jagielski
166*b1cdbd2cSJim JagielskiErrorOcurred:
167*b1cdbd2cSJim Jagielski	MsgBox(GetResText( STYLES+1 ), 16, GetResText( STYLES ))
168*b1cdbd2cSJim Jagielski	On Local Error Goto 0
169*b1cdbd2cSJim JagielskiEnd Sub
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski
172*b1cdbd2cSJim JagielskiSub RestoreCurrentStyles
173*b1cdbd2cSJim Jagielski&apos;This sub retrieves the styles from the temporarily save document
174*b1cdbd2cSJim Jagielski	ToggleWindow(False)
175*b1cdbd2cSJim Jagielski	On Local Error Goto NoFile
176*b1cdbd2cSJim Jagielski	If FileExists(aTempURL) Then
177*b1cdbd2cSJim Jagielski	  	aOptions(0).Name = &quot;OverwriteStyles&quot;
178*b1cdbd2cSJim Jagielski  		aOptions(0).Value = true
179*b1cdbd2cSJim Jagielski		oFamilies.LoadStylesFromURL(aTempURL, aOptions())
180*b1cdbd2cSJim Jagielski		KillTempFile()
181*b1cdbd2cSJim Jagielski	End If
182*b1cdbd2cSJim Jagielski	StylesDialog.EndExecute
183*b1cdbd2cSJim Jagielski	ToggleWindow(True)
184*b1cdbd2cSJim JagielskiNOFILE:
185*b1cdbd2cSJim Jagielski	If Err &lt;&gt; 0 Then
186*b1cdbd2cSJim Jagielski		Msgbox(&quot;Cannot load Document from &quot; &amp; aTempUrl, 64, GetProductname())
187*b1cdbd2cSJim Jagielski	End If
188*b1cdbd2cSJim Jagielski	On Local Error Goto 0
189*b1cdbd2cSJim JagielskiEnd Sub
190*b1cdbd2cSJim Jagielski
191*b1cdbd2cSJim Jagielski
192*b1cdbd2cSJim JagielskiSub CloseStyleDialog
193*b1cdbd2cSJim Jagielski	KillTempFile()
194*b1cdbd2cSJim Jagielski	DialogExited = True
195*b1cdbd2cSJim Jagielski	StylesDialog.Endexecute
196*b1cdbd2cSJim JagielskiEnd Sub
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski
199*b1cdbd2cSJim JagielskiSub KillTempFile()
200*b1cdbd2cSJim Jagielski	If oUcbObject.Exists(aTempUrl) Then
201*b1cdbd2cSJim Jagielski		oUcbObject.Kill(aTempUrl)
202*b1cdbd2cSJim Jagielski	End If
203*b1cdbd2cSJim JagielskiEnd Sub
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski</script:module>
206