Package org.pentaho.reporting.ui.datasources.cda

Source Code of org.pentaho.reporting.ui.datasources.cda.ParameterEditorDialog$EditResult

/*!
* 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.ui.datasources.cda;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.net.URL;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableCellEditor;

import org.pentaho.reporting.engine.classic.core.ParameterMapping;
import org.pentaho.reporting.libraries.designtime.swing.BorderlessButton;
import org.pentaho.reporting.libraries.designtime.swing.CommonDialog;
import org.pentaho.reporting.libraries.designtime.swing.propertyeditors.TagListTableCellEditor;

public class ParameterEditorDialog extends CommonDialog
{

  private class RemoveParameterAction extends AbstractAction implements ListSelectionListener
  {
    private RemoveParameterAction()
    {
      final URL resource = CdaDataSourceEditor.class.getResource
          ("/org/pentaho/reporting/ui/datasources/cda/resources/Remove.png");
      if (resource != null)
      {
        putValue(Action.SMALL_ICON, new ImageIcon(resource));
      }
      else
      {
        putValue(Action.NAME, Messages.getString("ParameterEditorDialog.RemoveParameter.Name"));
      }
      putValue(Action.SHORT_DESCRIPTION, Messages.getString("ParameterEditorDialog.RemoveParameter.Description"));
    }

    /**
     * Invoked when an action occurs.
     */
    public void actionPerformed(final ActionEvent e)
    {
      final TableCellEditor tableCellEditor = parameterMappingTable.getCellEditor();
      if (tableCellEditor != null)
      {
        tableCellEditor.stopCellEditing();
      }
      final int i = parameterMappingTable.getSelectedRow();
      if (i == -1)
      {
        return;
      }

      final ParameterMappingTableModel tableModel = (ParameterMappingTableModel) parameterMappingTable.getModel();
      tableModel.removeRow(i);
    }

    /**
     * Called whenever the value of the selection changes.
     *
     * @param e the event that characterizes the change.
     */
    public void valueChanged(final ListSelectionEvent e)
    {
      setEnabled(parameterMappingTable.getSelectedRow() != -1);
    }
  }


  private class AddParameterAction extends AbstractAction
  {
    private AddParameterAction()
    {
      final URL resource = CdaDataSourceEditor.class.getResource
          ("/org/pentaho/reporting/ui/datasources/cda/resources/Add.png");
      if (resource != null)
      {
        putValue(Action.SMALL_ICON, new ImageIcon(resource));
      }
      else
      {
        putValue(Action.NAME, Messages.getString("ParameterEditorDialog.AddParameter.Name"));
      }
      putValue(Action.SHORT_DESCRIPTION, Messages.getString("ParameterEditorDialog.AddParameter.Description"));
    }

    /**
     * Invoked when an action occurs.
     */
    public void actionPerformed(final ActionEvent e)
    {
      final TableCellEditor tableCellEditor = parameterMappingTable.getCellEditor();
      if (tableCellEditor != null)
      {
        tableCellEditor.stopCellEditing();
      }
      final ParameterMappingTableModel tableModel = (ParameterMappingTableModel) parameterMappingTable.getModel();
      tableModel.addRow();
    }
  }

  public static class EditResult
  {
    private ParameterMapping[] parameterMappings;

    public EditResult(final ParameterMapping[] parameterMappings)
    {
      if (parameterMappings == null)
      {
        throw new NullPointerException();
      }

      this.parameterMappings = parameterMappings.clone();
    }

    public ParameterMapping[] getParameterMappings()
    {
      return parameterMappings.clone();
    }
  }

  private JTable parameterMappingTable;
  private TagListTableCellEditor innerTableCellEditor;
  private TagListTableCellEditor outerTableCellEditor;

  public ParameterEditorDialog()
  {
    init();
  }

  public ParameterEditorDialog(final Frame owner)
  {
    super(owner);
    init();
  }

  public ParameterEditorDialog(final Dialog owner)
  {
    super(owner);
    init();
  }

  @Override
  protected void init()
  {
    super.init();
    setTitle(Messages.getString("ParameterEditorDialog.Title"));
  }

  protected String getDialogId()
  {
    return "CdaDataSourceEditor.ParameterEditor";
  }

  @Override
  protected Component createContentPane()
  {
    innerTableCellEditor = new TagListTableCellEditor();
    outerTableCellEditor = new TagListTableCellEditor();

    parameterMappingTable = new JTable(new ParameterMappingTableModel());
    parameterMappingTable.getColumnModel().getColumn(0).setCellEditor(innerTableCellEditor);
    parameterMappingTable.getColumnModel().getColumn(1).setCellEditor(outerTableCellEditor);
    parameterMappingTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    final RemoveParameterAction removeParameterAction = new RemoveParameterAction();
    parameterMappingTable.getSelectionModel().addListSelectionListener(removeParameterAction);

    final JPanel parameterMappingButtonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 5));
    parameterMappingButtonPanel.add(new BorderlessButton(new AddParameterAction()));
    parameterMappingButtonPanel.add(new BorderlessButton(new RemoveParameterAction()));

    final JPanel parameterMappingPanel = new JPanel(new BorderLayout());
    parameterMappingPanel.setBorder(BorderFactory.createTitledBorder(Messages.getString("ParameterEditorDialog.ParameterBox")));
    parameterMappingPanel.add(new JScrollPane(parameterMappingTable), BorderLayout.CENTER);
    parameterMappingPanel.add(parameterMappingButtonPanel, BorderLayout.NORTH);

    final JPanel contentPane = new JPanel();
    contentPane.setLayout(new GridLayout(1, 2, 5, 5));
    contentPane.add(parameterMappingPanel);
    return contentPane;
  }

  public EditResult performEdit(final ParameterMapping[] parameterMappings,
                                final String[] reportFields,
                                final String[] declaredParameter)
  {
    innerTableCellEditor.setTags(reportFields);
    outerTableCellEditor.setTags(declaredParameter);

    final ParameterMappingTableModel parameterMappingTableModel =
        (ParameterMappingTableModel) parameterMappingTable.getModel();
    parameterMappingTableModel.setMappings(parameterMappings);

    if (super.performEdit() == false)
    {
      return null;
    }

    final TableCellEditor cellEditor = parameterMappingTable.getCellEditor();
    if (cellEditor != null)
    {
      cellEditor.stopCellEditing();
    }

    return new EditResult(parameterMappingTableModel.getMappings());
  }
}
TOP

Related Classes of org.pentaho.reporting.ui.datasources.cda.ParameterEditorDialog$EditResult

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.