blob: 47a80c957f58c3efab545f04aa68d40765aa9193 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package com.sun.star.wizards.web;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.wizards.common.FileAccess;
import com.sun.star.wizards.common.PropertyNames;
import com.sun.star.wizards.web.data.CGStyle;
/**
* @author rpiterman
* the style preview, which is a OOo Document Preview in
* an Image Control.
* This class copies the files needed for this
* preview from the web wizard work directory
* to a given temporary directory, and updates them
* on request, according to the current style/background selection
* of the user.
*/
public class StylePreview
{
private FileAccess fileAccess;
/**
* the destination html url.
*/
public String htmlFilename;
/**
* the destination css url
*/
private String cssFilename;
/**
* destination directory
*/
public String tempDir;
/**
* destination background file url
*/
private String backgroundFilename;
/**
* web wizard work directory
*/
private String wwRoot;
/**
* copies the html file to the temp directory, and calculates the
* destination names of the background and css files.
* @param wwRoot is the root directory of the web wizard files (
* usually [oo]/share/template/[lang]/wizard/web
*/
public StylePreview(XMultiServiceFactory xmsf, String wwRoot_) throws Exception
{
fileAccess = new FileAccess(xmsf);
tempDir = createTempDir(xmsf);
htmlFilename = FileAccess.connectURLs(tempDir, "wwpreview.html");
cssFilename = FileAccess.connectURLs(tempDir, "style.css");
backgroundFilename = FileAccess.connectURLs(tempDir, "images/background.gif");
wwRoot = wwRoot_;
fileAccess.copy(FileAccess.connectURLs(wwRoot, "preview.html"), htmlFilename);
}
/**
* copies the given style and background files to the temporary
* directory.
* @param style
* @param background
* @throws Exception
*/
public void refresh(CGStyle style, String background) throws Exception
{
String css = FileAccess.connectURLs(wwRoot, "styles/" + style.cp_CssHref);
if (background == null || background.equals(PropertyNames.EMPTY_STRING))
{
//delete the background image
if (fileAccess.exists(backgroundFilename, false))
{
fileAccess.delete(backgroundFilename);
}
}
else
{
// a solaris bug workaround
// TODO
//copy the background image to the temp directory.
fileAccess.copy(background, backgroundFilename);
}
//copy the actual css to the temp directory
fileAccess.copy(css, cssFilename);
}
public void cleanup()
{
try
{
removeTempDir();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
/**
* creates a temporary directory.
* @param xmsf
* @return the url of the new directory.
* @throws Exception
*/
private String createTempDir(XMultiServiceFactory xmsf) throws Exception
{
String tempPath = FileAccess.getOfficePath(xmsf, "Temp", PropertyNames.EMPTY_STRING, PropertyNames.EMPTY_STRING);
String s = fileAccess.createNewDir(tempPath, "wwiz");
fileAccess.createNewDir(s, "images");
return s;
}
/**
* deletes/removes the temporary directroy.
* @throws Exception
*/
private void removeTempDir() throws Exception
{
fileAccess.delete(tempDir);
}
}