Package org.pentaho.reporting.tools.configeditor.editor

Source Code of org.pentaho.reporting.tools.configeditor.editor.ConfigEditorPanel

/*
* 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) 2001 - 2009 Object Refinery Ltd, Pentaho Corporation and Contributors.  All rights reserved.
*/

package org.pentaho.reporting.tools.configeditor.editor;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.text.MessageFormat;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.UIManager;

import org.pentaho.reporting.libraries.base.boot.Module;
import org.pentaho.reporting.libraries.base.config.HierarchicalConfiguration;
import org.pentaho.reporting.tools.configeditor.model.ConfigDescriptionEntry;
import org.pentaho.reporting.tools.configeditor.util.VerticalLayout;

/**
* The container component that is responsible for creating and managing the module editor for the currently selected
* module.
*
* @author Thomas Morgner
*/
public class ConfigEditorPanel extends JPanel
{
  /**
   * A component holding the module description.
   */
  private final JTextArea descriptionArea;
  /**
   * A component holding the name of the module.
   */
  private final JTextArea moduleNameField;
  /**
   * A component holding the producer of the current module.
   */
  private final JTextArea producerField;

  /**
   * The message format used to create the module name and version.
   */
  private final MessageFormat moduleNameFormat;
  /**
   * The container to hold the editor.
   */
  private final JPanel editorArea;

  /**
   * The current module editor (may be null).
   */
  private ModuleEditor moduleEditor;

  /**
   * Creates a new ConfigEditorPanel.
   */
  public ConfigEditorPanel()
  {
    moduleNameFormat = new MessageFormat("{0} - Version {1}.{2}-{3}"); //$NON-NLS-1$

    moduleNameField = new JTextArea();
    moduleNameField.setName("ModuleNameField"); //$NON-NLS-1$
    moduleNameField.setMinimumSize(new Dimension(100, 10));
    moduleNameField.setEditable(false);
    moduleNameField.setLineWrap(false);
    moduleNameField.setFont(new Font("SansSerif", //$NON-NLS-1$
        Font.BOLD, moduleNameField.getFont().getSize() + 4));

    producerField = new JTextArea();
    producerField.setName("ProducerField"); //$NON-NLS-1$
    producerField.setMinimumSize(new Dimension(100, 10));
    producerField.setEditable(false);
    producerField.setLineWrap(false);
    producerField.setWrapStyleWord(true);
    producerField.setFont(producerField.getFont().deriveFont(Font.ITALIC));
    producerField.setBackground(UIManager.getColor("controlLtHighlight")); //$NON-NLS-1$

    descriptionArea = new JTextArea();
    descriptionArea.setName("DescriptionArea"); //$NON-NLS-1$
    descriptionArea.setMinimumSize(new Dimension(100, 10));
    descriptionArea.setEditable(false);
    descriptionArea.setLineWrap(true);
    descriptionArea.setWrapStyleWord(true);
    descriptionArea.setBackground(UIManager.getColor("controlShadow")); //$NON-NLS-1$

    editorArea = new JPanel();
    editorArea.setLayout(new BorderLayout());

    final JPanel contentArea = new JPanel();
    contentArea.setLayout(new VerticalLayout());//this, BoxLayout.Y_AXIS));
    contentArea.add(moduleNameField);
    contentArea.add(producerField);
    contentArea.add(descriptionArea);

    setLayout(new BorderLayout());
    add(contentArea, BorderLayout.NORTH);
    add(editorArea, BorderLayout.CENTER);
  }

  /**
   * Defines the currently edited module and initializes an module editor for that module.
   *
   * @param module  the module that should be edited.
   * @param config  the report configuration that supplies the values for the module.
   * @param entries a list of entries which should be edited.
   */
  public void editModule(final Module module,
                         final HierarchicalConfiguration config,
                         final ConfigDescriptionEntry[] entries)
  {
    final Object[] params = new Object[4];
    params[0] = module.getName();
    params[1] = module.getMajorVersion();
    params[2] = module.getMinorVersion();
    params[3] = module.getPatchLevel();
    moduleNameField.setText(moduleNameFormat.format(params));
    producerField.setText(module.getProducer());
    descriptionArea.setText(module.getDescription());

    editorArea.removeAll();

    moduleEditor = EditorFactory.getInstance().getModule(module, config, entries);
    if (moduleEditor != null)
    {
      editorArea.add(moduleEditor.getComponent());
      moduleEditor.reset();
    }
    invalidate();
  }

  /**
   * Resets the currently edited module to the default values from the report configuration.
   */
  public void reset()
  {
    if (moduleEditor != null)
    {
      moduleEditor.reset();
    }
  }

  /**
   * Stores all values from the module editor into the report configuration.
   */
  public void store()
  {
    if (moduleEditor != null)
    {
      moduleEditor.store();
    }
  }

}
TOP

Related Classes of org.pentaho.reporting.tools.configeditor.editor.ConfigEditorPanel

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.