| /************************************************************** |
| * |
| * 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"); |
| } |
| } |
| } |