/******************************************************************************* * Copyright (c) 2010 Stefan A. Tzeggai. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v2.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * Stefan A. Tzeggai - initial API and implementation ******************************************************************************/ package org.geopublishing.geopublisher; import javax.swing.tree.TreeNode; import org.apache.commons.lang.StringEscapeUtils; import org.geopublishing.atlasViewer.dp.DpEntry; import org.geopublishing.atlasViewer.dp.Group; import org.geopublishing.atlasViewer.dp.layer.DpLayerVector; import org.geopublishing.atlasViewer.dp.layer.DpLayerVectorFeatureSource; import org.geopublishing.atlasViewer.dp.layer.LayerStyle; import org.geopublishing.geopublisher.swing.GeopublisherGUI; import de.schmitzm.geotools.data.amd.AttributeMetadataImpl; import de.schmitzm.geotools.data.amd.AttributeMetadataMap; import de.schmitzm.i18n.Translation; import de.schmitzm.jfree.chart.style.ChartStyle; import de.schmitzm.lang.LangUtil; public class ACETranslationPrinter { String ERROR = "ERROR "; String WAY = " ->"; private final AtlasConfigEditable ace; private StringBuffer txt; public ACETranslationPrinter(AtlasConfigEditable ace) { this.ace = ace; } /** * This method can take a while and produce disk traffic. * * @return a {@link String} containing a human-readable summary of all {@link Translation}s used. */ public String printAllTranslations() { txt = new StringBuffer(4000); /** * AtlasParams */ printWayH1(R("ACETranslationPrinter.Heading.GeneralInformation")); printWayH2(R("MenuBar.AtlasMenu"), R("MenuBar.AtlasMenu.ChangeAtlasParams")); printTranslation(ace.getTitle(), "AtlasParamsTranslationDialog.Title"); printTranslation(ace.getDesc(), "AtlasParamsTranslationDialog.Description"); printTranslation(ace.getCreator(), "AtlasParamsTranslationDialog.Creator"); printTranslation(ace.getCopyright(), "AtlasParamsTranslationDialog.Copyright"); /** * DataPool */ printWayH1(R("DataPoolJTable.Border.Title")); for (DpEntry<? extends ChartStyle> dpe : ace.getDataPool().values()) { printWayH2(R("DataPoolJTable.Border.Title"), R("DataPoolJTable.ColumnName.Filename"), dpe.getFilename(), R("DataPoolWindow_Action_EditDPE_label")); printTranslation(dpe.getTitle(), "EditDPEDialog.TranslateTitle"); printTranslation(dpe.getDesc(), "EditDPEDialog.TranslateDescription"); printTranslation(dpe.getKeywords(), "EditDPEDialog.TranslateKeywords"); if (dpe instanceof DpLayerVector<?, ?>) { /** * List additional layer styles */ DpLayerVector<?, ?> dplv = (DpLayerVector<?, ?>) dpe; for (LayerStyle ls : dplv.getLayerStyles()) { printWayH3(R("DataPoolJTable.Border.Title"), "\"<b>" + dpe.getFilename() + "</b>\"", R("DataPoolWindow_Action_ManageLayerStyles_label"), "\"<b>" + ls.getFilename() + "</b>\""); txt.append("<ul>"); printTranslation(ls.getTitle(), "Attributes.Edit.Title"); printTranslation(ls.getDesc(), "Attributes.Edit.Desc"); txt.append("</ul>"); } } if (dpe instanceof DpLayerVectorFeatureSource) { /** * List visible attributes */ DpLayerVectorFeatureSource dplv = (DpLayerVectorFeatureSource) dpe; AttributeMetadataMap<AttributeMetadataImpl> attributeMetaDataMap = dplv.getAttributeMetaDataMap(); for (AttributeMetadataImpl attributeMetaData : attributeMetaDataMap.sortedValues()) { if (attributeMetaData.isVisible()) { try { printWayH3(R("DataPoolJTable.Border.Title"), "\"<b>" + dpe.getFilename() + "</b>\"", R("DataPoolWindow_Action_EditColumns_label"), "\"<b>" + attributeMetaData.getName() + "</b>\""); txt.append("<ul>"); printTranslation(attributeMetaData.getTitle(), "Attributes.Edit.Title"); printTranslation(attributeMetaData.getDesc(), "Attributes.Edit.Desc"); txt.append("<li><h3>" + R("Unit") + " = " + attributeMetaData.getUnit() + "</h3></li>"); txt.append("</ul>"); } catch (Exception e) { txt.append(ERROR + e.getLocalizedMessage()); } } } } /** * list Charts */ printWayH1(R("Charts")); try { org.geopublishing.atlasViewer.map.Map map = ace.getMapPool().get(0); for (ChartStyle cs : dpe.getCharts()) { txt.append("<ul>"); printWayH2(R("MapPoolJTable.Border.Title"), R("MapPoolJTable.ColumnName.NameLang", Translation.getActiveLang()), "<b>\"" + StringEscapeUtils.escapeHtml(map.getTitle().toString()) + "\"</b>", R("MapPoolWindow.Action.OpenInMapComposer"), "<b>\"" + StringEscapeUtils.escapeHtml(dpe.getTitle().toString()) + "\"</b>", R("DataPoolWindow_Action_ManageCharts_label")); printTranslation(cs.getTitleStyle().getLabelTranslation(), "Attributes.Edit.Title"); printTranslation(cs.getDescStyle().getLabelTranslation(), "Attributes.Edit.Desc"); txt.append("</ul>"); } } catch (Exception e) { txt.append(ERROR + e.getLocalizedMessage()); } } /** * MapPool */ printWayH1(R("MapPoolJTable.Border.Title")); for (org.geopublishing.atlasViewer.map.Map map : ace.getMapPool().values()) { printWayH2(R("MapPoolJTable.Border.Title"), R("MapPoolJTable.ColumnName.NameLang", Translation.getActiveLang()), "<b>\"" + StringEscapeUtils.escapeHtml(map.getTitle().toString()) + "\"</b>", R("MapPoolWindow.Button_EditMap_label")); printTranslation(map.getTitle(), "MapPreferences_translateTheMapsName"); printTranslation(map.getDesc(), "MapPreferences_translateTheMapsDescription"); printTranslation(map.getKeywords(), "MapPreferences_translateTheMapsKeywords"); } /** * Groups/ Menus */ printWayH1(R("EditGroupsDnDJTreePanel.Border.Title")); printGroup(ace.getRootGroup(), R("EditGroupsDnDJTreePanel.Border.Title")); return txt.toString(); } private void printGroup(Group g, String... wayToHere) { LangUtil.extendArray(wayToHere, R("GroupTree.Action.Edit")); for (int gi = 0; gi < g.getChildCount(); gi++) { TreeNode child = g.getChildAt(gi); if (!child.isLeaf()) { Group subg = (Group) child; String[] longWay = LangUtil.extendArray(wayToHere, subg.getTitle().toString()); // Object[] lw2 = ArrayUtils.clone(longWay); // longWay = new String[0]; // for (Object s : lw2) { // longWay = LangUtil.extendArray(wayToHere, StringEscapeUtils.escapeHtml(((String) s))); // } printWayH2(longWay); printTranslation(subg.getTitle(), "GroupTree.Edit.TranslateTitle"); printTranslation(subg.getDesc(), "GroupTree.Edit.TranslateDescription"); printTranslation(subg.getKeywords(), "GroupTree.Edit.TranslateKeywords"); printGroup(subg, longWay); } } /* * GroupTree.Edit.TranslateTitle=Translate name: GroupTree.Edit.TranslateDescription=Translate description: * GroupTree.Edit.TranslateKeywords=Translate keywords: */ } private void printWayH1(String... steps) { txt.append("<h1>"); printWay(steps); txt.append("</h1>"); } private void printWayH2(String... steps) { txt.append("<h2>"); printWay(steps); txt.append("</h2>"); } private void printWayH3(String... steps) { txt.append("<h3>"); printWay(steps); txt.append("</h3>"); } public String R(String key, Object... values) { return StringEscapeUtils.escapeHtml(GeopublisherGUI.R(key, values)); } private void printWay(String... steps) { for (String stepKey : steps) { txt.append(stepKey + WAY); } txt.delete(txt.length() - WAY.length(), txt.length()); } private void printTranslation(Translation translation, String key) { txt.append("<li>"); txt.append("<h3>"); txt.append(R(key, "", "")); txt.append("</h3>"); txt.append("<ul>"); for (String l : ace.getLanguages()) { txt.append("<li>"); String val = translation.get(l); if (val == null) val = ""; txt.append("<p>"); txt.append(l + " = " + StringEscapeUtils.escapeHtml(val)); txt.append("</p>"); txt.append("</li>"); } txt.append("</ul>"); txt.append("</li>"); } }