Package com.sun.star.wizards.web.data

Source Code of com.sun.star.wizards.web.data.CGSettings$Formatter

/**************************************************************
*
* 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.
*
*************************************************************/



/*
* IconSet.java
*
* Created on 12. September 2003, 17:16
*/
package com.sun.star.wizards.web.data;

import java.util.Hashtable;
import java.util.Map;
import java.util.Vector;

import com.sun.star.beans.PropertyValue;
import com.sun.star.container.NoSuchElementException;
import com.sun.star.container.XNameAccess;
import com.sun.star.i18n.NumberFormatIndex;
import com.sun.star.lang.WrappedTargetException;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.util.DateTime;
import com.sun.star.wizards.common.*;
import com.sun.star.wizards.common.Helper.DateUtils;

/**
* @author  rpiterman
*/
public class CGSettings extends ConfigGroup
{

    public String soTemplateDir;
    public String soGalleryDir;
    public String workPath = null;
    public String cp_WorkDir;
    public ConfigSet cp_Exporters = new ConfigSet(CGExporter.class);
    public ConfigSet cp_Layouts = new ConfigSet(CGLayout.class);
    public ConfigSet cp_Styles = new ConfigSet(CGStyle.class);
    public ConfigSet cp_IconSets = new ConfigSet(CGIconSet.class);
    public ConfigSet cp_BackgroundImages = new ConfigSet(CGImage.class);
    public ConfigSet cp_SavedSessions = new ConfigSet(CGSessionName.class);
    public ConfigSet cp_Filters = new ConfigSet(CGFilter.class);
    public ConfigSet savedSessions = new ConfigSet(CGSessionName.class);
    public CGSession cp_DefaultSession = new CGSession();
    public String cp_LastSavedSession;
    private Map exportersMap = new Hashtable();
    private XMultiServiceFactory xmsf;
    String[] resources;
    public Formatter formatter;
    public static final int RESOURCE_PAGES_TEMPLATE = 0;
    public static final int RESOURCE_SLIDES_TEMPLATE = 1;
    public static final int RESOURCE_CREATED_TEMPLATE = 2;
    public static final int RESOURCE_UPDATED_TEMPLATE = 3;
    public static final int RESOURCE_SIZE_TEMPLATE = 4;

    public CGSettings(XMultiServiceFactory xmsf_, String[] resources_, Object document)
    {
        xmsf = xmsf_;
        try
        {
            soTemplateDir = FileAccess.getOfficePath(xmsf, "Config", PropertyNames.EMPTY_STRING, PropertyNames.EMPTY_STRING);
            soGalleryDir = FileAccess.getOfficePath(xmsf, "Gallery", "share", PropertyNames.EMPTY_STRING);
            root = this;
            formatter = new Formatter(xmsf, document);
            resources = resources_;
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
    private static final CGExporter[] EMPTY_ARRAY_1 = new CGExporter[0];

    public CGExporter[] getExporters(String mime)
    {
        CGExporter[] exps = (CGExporter[]) exportersMap.get(mime);
        if (exps == null)
        {
            exportersMap.put(mime, exps = createExporters(mime));
        }
        return exps;
    }

    private CGExporter[] createExporters(String mime)
    {
        Object[] exporters = cp_Exporters.items();
        Vector v = new Vector();
        for (int i = 0; i < exporters.length; i++)
        {
            if (((CGExporter) exporters[i]).supports(mime))
            {
                try
                {
                    v.add(exporters[i]);
                }
                catch (Exception ex)
                {
                    ex.printStackTrace();
                }
            }
        }
        return (CGExporter[]) v.toArray(new CGExporter[v.size()]);
    }

    /**
     * call after read.
     * @param xmsf
     * @param document the background document. used for date/number formatting.
     */
    public void configure(XMultiServiceFactory xmsf) throws Exception
    {
        workPath = FileAccess.connectURLs(soTemplateDir, cp_WorkDir);
        calcExportersTargetTypeNames(xmsf);
    }

    private void calcExportersTargetTypeNames(XMultiServiceFactory xmsf) throws Exception
    {
        Object typeDetect = xmsf.createInstance("com.sun.star.document.TypeDetection");
        XNameAccess xNameAccess = UnoRuntime.queryInterface(XNameAccess.class, typeDetect);
        for (int i = 0; i < cp_Exporters.getSize(); i++)
        {
            calcExporterTargetTypeName(xNameAccess, (CGExporter) cp_Exporters.getElementAt(i));
        }
    }

    private void calcExporterTargetTypeName(XNameAccess xNameAccess, CGExporter exporter)
            throws NoSuchElementException,
            WrappedTargetException
    {
        if (!exporter.cp_TargetType.equals(PropertyNames.EMPTY_STRING))
        {
            exporter.targetTypeName =
                    (String) Properties.getPropertyValue(
                    (PropertyValue[]) xNameAccess.getByName(exporter.cp_TargetType),
                    "UIName");
        }
    }
    FileAccess fileAccess;

    FileAccess getFileAccess() throws Exception
    {
        return getFileAccess(xmsf);
    }

    FileAccess getFileAccess(XMultiServiceFactory xmsf) throws Exception
    {
        if (fileAccess == null)
        {
            fileAccess = new FileAccess(xmsf);
        }
        return fileAccess;
    }

    public class Formatter
    {

        private long docNullTime;
        private int dateFormat,  numberFormat;
        private DateUtils dateUtils;

        public Formatter(XMultiServiceFactory xmsf, Object document) throws Exception
        {
            dateUtils = new DateUtils(xmsf, document);
            dateFormat = dateUtils.getFormat(NumberFormatIndex.DATE_SYS_DMMMYYYY);
            numberFormat = dateUtils.getFormat(NumberFormatIndex.NUMBER_1000DEC2);
        }

        public String formatCreated(DateTime date)
        {
            String sDate = dateUtils.format(dateFormat, date);
            return JavaTools.replaceSubString(resources[CGSettings.RESOURCE_CREATED_TEMPLATE], sDate, "%DATE");
        }

        public String formatUpdated(DateTime date)
        {
            String sDate = dateUtils.format(dateFormat, date);
            return JavaTools.replaceSubString(resources[CGSettings.RESOURCE_UPDATED_TEMPLATE], sDate, "%DATE");
        }

        public String formatFileSize(int size)
        {
            float sizeInKB = ((float) size) / 1024f;
            String sSize = dateUtils.getFormatter().convertNumberToString(numberFormat, sizeInKB);
            return JavaTools.replaceSubString(resources[CGSettings.RESOURCE_SIZE_TEMPLATE], sSize, "%NUMBER");
        }
    }
}
TOP

Related Classes of com.sun.star.wizards.web.data.CGSettings$Formatter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.