/*! * 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.crosstab; import org.pentaho.reporting.designer.core.ReportDesignerContext; import org.pentaho.reporting.designer.core.util.table.ElementMetaDataTable; import org.pentaho.reporting.designer.core.util.table.GroupedMetaTableModel; import org.pentaho.reporting.engine.classic.core.AttributeNames; import org.pentaho.reporting.engine.classic.core.CrosstabDetailMode; import org.pentaho.reporting.engine.classic.core.CrosstabGroup; import org.pentaho.reporting.engine.classic.core.elementfactory.CrosstabBuilder; import org.pentaho.reporting.engine.classic.core.filter.types.AutoLayoutBoxType; import org.pentaho.reporting.engine.classic.core.filter.types.bands.CrosstabGroupType; import org.pentaho.reporting.engine.classic.core.style.ElementStyleKeys; import javax.swing.*; import java.awt.*; public class CrosstabOptionsPane extends JComponent { private final ElementMetaDataTable metaDataTable; private CrosstabOptionsTableModel tableModel; public CrosstabOptionsPane() { tableModel = createOptions(); metaDataTable = new ElementMetaDataTable(); metaDataTable.setModel( new GroupedMetaTableModel( tableModel ) ); setLayout( new BorderLayout() ); add( new JScrollPane( metaDataTable ) ); } private CrosstabOptionsTableModel createOptions() { final CrosstabOptionsTableModel crosstabOptionsTableModel = new CrosstabOptionsTableModel(); crosstabOptionsTableModel.addAttributeOption( CrosstabGroupType.INSTANCE, AttributeNames.Crosstab.NAMESPACE, AttributeNames.Crosstab.DETAIL_MODE, CrosstabDetailMode.last ); crosstabOptionsTableModel.addAttributeOption( CrosstabGroupType.INSTANCE, AttributeNames.Crosstab.NAMESPACE, AttributeNames.Crosstab.NORMALIZATION_MODE, null ); crosstabOptionsTableModel.addAttributeOption( CrosstabGroupType.INSTANCE, AttributeNames.Crosstab.NAMESPACE, AttributeNames.Crosstab.PRINT_DETAIL_HEADER, null ); crosstabOptionsTableModel.addAttributeOption( CrosstabGroupType.INSTANCE, AttributeNames.Crosstab.NAMESPACE, AttributeNames.Crosstab.PADDING_FIELDS, null ); crosstabOptionsTableModel.addAttributeOption( AutoLayoutBoxType.INSTANCE, AttributeNames.Wizard.NAMESPACE, AttributeNames.Wizard.ALLOW_METADATA_STYLING, null ); crosstabOptionsTableModel.addAttributeOption( AutoLayoutBoxType.INSTANCE, AttributeNames.Wizard.NAMESPACE, AttributeNames.Wizard.ALLOW_METADATA_ATTRIBUTES, null ); crosstabOptionsTableModel.addStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MIN_WIDTH, -100f ); crosstabOptionsTableModel.addStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MIN_HEIGHT, -100f ); crosstabOptionsTableModel.addStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.WIDTH, null ); crosstabOptionsTableModel.addStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.HEIGHT, null ); crosstabOptionsTableModel.addStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MAX_WIDTH, null ); crosstabOptionsTableModel.addStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MAX_HEIGHT, null ); return crosstabOptionsTableModel; } public Float getMinWidth() { return (Float) tableModel.getStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MIN_WIDTH ); } public void setMinWidth( final Float minWidth ) { tableModel.setStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MIN_WIDTH, minWidth ); } public Float getMinHeight() { return (Float) tableModel.getStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MIN_HEIGHT ); } public void setMinHeight( final Float minHeight ) { tableModel.setStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MIN_HEIGHT, minHeight ); } public Float getPrefWidth() { return (Float) tableModel.getStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.WIDTH ); } public void setPrefWidth( final Float width ) { tableModel.setStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.WIDTH, width ); } public Float getPrefHeight() { return (Float) tableModel.getStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.HEIGHT ); } public void setPrefHeight( final Float height ) { tableModel.setStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.HEIGHT, height ); } public Float getMaxWidth() { return (Float) tableModel.getStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MAX_WIDTH ); } public void setMaxWidth( final Float maxWidth ) { tableModel.setStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MAX_WIDTH, maxWidth ); } public Float getMaxHeight() { return (Float) tableModel.getStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MAX_HEIGHT ); } public void setMaxHeight( final Float maxHeight ) { tableModel.setStyleOption( AutoLayoutBoxType.INSTANCE, ElementStyleKeys.MAX_HEIGHT, maxHeight ); } public Boolean getAllowMetaDataStyling() { return (Boolean) tableModel.getAttributeOption ( AutoLayoutBoxType.INSTANCE, AttributeNames.Wizard.NAMESPACE, AttributeNames.Wizard.ALLOW_METADATA_STYLING ); } public void setAllowMetaDataStyling( final Boolean allowMetaDataStyling ) { tableModel.setAttributeOption( AutoLayoutBoxType.INSTANCE, AttributeNames.Wizard.NAMESPACE, AttributeNames.Wizard.ALLOW_METADATA_STYLING, allowMetaDataStyling ); } public Boolean getAllowMetaDataAttributes() { return (Boolean) tableModel.getAttributeOption ( AutoLayoutBoxType.INSTANCE, AttributeNames.Wizard.NAMESPACE, AttributeNames.Wizard.ALLOW_METADATA_ATTRIBUTES ); } public void setAllowMetaDataAttributes( final Boolean allowMetaDataAttributes ) { tableModel.setAttributeOption( AutoLayoutBoxType.INSTANCE, AttributeNames.Wizard.NAMESPACE, AttributeNames.Wizard.ALLOW_METADATA_ATTRIBUTES, allowMetaDataAttributes ); } public void setValuesFromGroup( final CrosstabGroup crosstabGroup ) { tableModel.copyFrom( crosstabGroup ); } public void setValuesOnGroup( final CrosstabGroup crosstabGroup ) { tableModel.copyInto( crosstabGroup ); } public void configureCrosstabBuilder( final CrosstabBuilder builder ) { builder.setMinimumWidth( getMinWidth() ); builder.setMinimumHeight( getMinHeight() ); builder.setPrefWidth( getPrefWidth() ); builder.setPrefHeight( getPrefHeight() ); builder.setMaximumWidth( getMaxWidth() ); builder.setMaximumHeight( getMaxHeight() ); builder.setAllowMetaDataAttributes( getAllowMetaDataAttributes() ); builder.setAllowMetaDataStyling( getAllowMetaDataStyling() ); } public void configureFromCrosstabBuilder( final CrosstabBuilder builder ) { if ( builder.getMaximumHeight() != null ) { setMaxHeight( builder.getMaximumHeight() ); } if ( builder.getMaximumWidth() != null ) { setMaxWidth( builder.getMaximumWidth() ); } if ( builder.getPrefHeight() != null ) { setPrefHeight( builder.getPrefHeight() ); } if ( builder.getPrefWidth() != null ) { setPrefWidth( builder.getPrefWidth() ); } if ( builder.getMinimumHeight() != null ) { setMinHeight( builder.getMinimumHeight() ); } if ( builder.getMinimumWidth() != null ) { setMinWidth( builder.getMinimumWidth() ); } if ( builder.getAllowMetaDataAttributes() != null ) { setAllowMetaDataAttributes( builder.getAllowMetaDataAttributes() ); } if ( builder.getAllowMetaDataStyling() != null ) { setAllowMetaDataStyling( builder.getAllowMetaDataStyling() ); } } public void setReportDesignerContext( final ReportDesignerContext newContext ) { metaDataTable.setReportDesignerContext( newContext ); } public ReportDesignerContext getReportDesignerContext() { return metaDataTable.getReportDesignerContext(); } }