/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.reporting.designer.core.editor.format;
import java.util.Locale;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.pentaho.reporting.designer.core.Messages;
import org.pentaho.reporting.engine.classic.core.modules.gui.commonswing.EncodingComboBoxModel;
import org.pentaho.reporting.engine.classic.core.style.ElementStyleKeys;
import org.pentaho.reporting.engine.classic.core.style.ElementStyleSheet;
import org.pentaho.reporting.engine.classic.core.style.TextStyleKeys;
import org.pentaho.reporting.tools.configeditor.util.VerticalLayout;
/**
* A panel that edits the not so common font properties.
* <p/>
* <ul> <li>embed</li> <li>encoding</li> <li>trim-text</li> <li>overflow-x/y</li> <li>reserved-literal</li></ul>
*
* @author Thomas Morgner
*/
public class AdvancedFontPropertiesPane extends JPanel
{
private EncodingComboBoxModel encodingModel;
private JCheckBox embedFontsCheckbox;
private JCheckBox trimTextCheckbox;
private JCheckBox overflowXCheckbox;
private JCheckBox overflowYCheckbox;
private JTextField quateField;
public AdvancedFontPropertiesPane()
{
encodingModel = EncodingComboBoxModel.createDefaultModel(Locale.getDefault(), true);
embedFontsCheckbox = new JCheckBox(Messages.getString("AdvancedFontPropertiesPane.EmbedFonts"));
trimTextCheckbox = new JCheckBox(Messages.getString("AdvancedFontPropertiesPane.TrimText"));
overflowXCheckbox = new JCheckBox(Messages.getString("AdvancedFontPropertiesPane.OverflowX"));
overflowYCheckbox = new JCheckBox(Messages.getString("AdvancedFontPropertiesPane.OverflowY"));
quateField = new JTextField();
quateField.setColumns(30);
setLayout(new VerticalLayout());
final JPanel encodingCarrier = new JPanel();
encodingCarrier.setLayout(new BoxLayout(encodingCarrier, BoxLayout.X_AXIS));
encodingCarrier.add(new JLabel(Messages.getString("AdvancedFontPropertiesPane.Encoding")));
encodingCarrier.add(new JComboBox(encodingModel));
final JPanel pdfPanel = new JPanel();
pdfPanel.setLayout(new VerticalLayout());
pdfPanel.setBorder(BorderFactory.createTitledBorder(Messages.getString("AdvancedFontPropertiesPane.PDFSettings")));
pdfPanel.add(embedFontsCheckbox);
pdfPanel.add(encodingCarrier);
final JPanel quateCarrier = new JPanel();
quateCarrier.setLayout(new BoxLayout(quateCarrier, BoxLayout.X_AXIS));
quateCarrier.add(new JLabel(Messages.getString("AdvancedFontPropertiesPane.Quate")));
quateCarrier.add(quateField);
final JPanel textProcessingPanel = new JPanel();
textProcessingPanel.setLayout(new VerticalLayout());
textProcessingPanel.setBorder(BorderFactory.createTitledBorder(Messages.getString("AdvancedFontPropertiesPane.TextProcessingSettings")));
textProcessingPanel.add(trimTextCheckbox);
textProcessingPanel.add(overflowXCheckbox);
textProcessingPanel.add(overflowYCheckbox);
textProcessingPanel.add(quateCarrier);
add(pdfPanel);
add(textProcessingPanel);
}
public void initializeFromStyle(final ElementStyleSheet style)
{
encodingModel.setSelectedEncoding((String) style.getStyleProperty(TextStyleKeys.FONTENCODING));
embedFontsCheckbox.setSelected(style.getBooleanStyleProperty(TextStyleKeys.EMBEDDED_FONT));
trimTextCheckbox.setSelected(style.getBooleanStyleProperty(TextStyleKeys.TRIM_TEXT_CONTENT));
overflowXCheckbox.setSelected(style.getBooleanStyleProperty(ElementStyleKeys.OVERFLOW_X));
overflowYCheckbox.setSelected(style.getBooleanStyleProperty(ElementStyleKeys.OVERFLOW_Y));
quateField.setText((String) style.getStyleProperty(TextStyleKeys.RESERVED_LITERAL));
}
public void commitValues(final ElementStyleSheet styleSheet)
{
styleSheet.setStyleProperty(TextStyleKeys.FONTENCODING, encodingModel.getSelectedEncoding());
styleSheet.setBooleanStyleProperty(TextStyleKeys.EMBEDDED_FONT, embedFontsCheckbox.isSelected());
styleSheet.setBooleanStyleProperty(TextStyleKeys.TRIM_TEXT_CONTENT, trimTextCheckbox.isSelected());
styleSheet.setBooleanStyleProperty(ElementStyleKeys.OVERFLOW_X, overflowXCheckbox.isSelected());
styleSheet.setBooleanStyleProperty(ElementStyleKeys.OVERFLOW_Y, overflowYCheckbox.isSelected());
styleSheet.setStyleProperty(TextStyleKeys.RESERVED_LITERAL, quateField.getText());
}
}