/* * 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) 2006 - 2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.reporting.designer.core; import org.pentaho.reporting.designer.core.editor.ElementPropertiesPanel; import org.pentaho.reporting.designer.core.editor.ReportDocumentContext; import org.pentaho.reporting.designer.core.editor.structuretree.AbstractReportTree; import org.pentaho.reporting.designer.core.editor.structuretree.StructureTreePanel; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; public class TreeSidePanel extends JComponent { private ReportDesignerContext context; private ElementPropertiesPanel attributeEditorPanel; private StructureAndDataTabChangeHandler structureAndDataTabChangeHandler; private JTabbedPane tabs; public TreeSidePanel( final ReportDesignerContext context, final ElementPropertiesPanel attributeEditorPanel ) { this.context = context; this.attributeEditorPanel = attributeEditorPanel; this.init(); } private void init() { // report structure final StructureTreePanel reportTree = new StructureTreePanel( AbstractReportTree.RenderType.REPORT ); reportTree.setReportDesignerContext( context ); final JPanel structurePanel = new JPanel( new BorderLayout() ); final JComponent structureToolBar = context.getToolBar( "report-structure-toolbar" );// NON-NLS structurePanel.add( structureToolBar, BorderLayout.NORTH ); structurePanel.add( reportTree, BorderLayout.CENTER ); final JPanel dataPanel = new JPanel( new BorderLayout() ); final JComponent dataToolBar = context.getToolBar( "report-fields-toolbar" );// NON-NLS dataPanel.add( dataToolBar, BorderLayout.NORTH ); final StructureTreePanel dataTree = new StructureTreePanel( AbstractReportTree.RenderType.DATA ); dataTree.setReportDesignerContext( context ); dataPanel.add( dataTree, BorderLayout.CENTER ); tabs = new JTabbedPane( JTabbedPane.TOP ); structureAndDataTabChangeHandler = new StructureAndDataTabChangeHandler(); tabs.addChangeListener( structureAndDataTabChangeHandler ); tabs.add( Messages.getString( "StructureView.Structure" ), structurePanel );// NON-NLS tabs.add( Messages.getString( "StructureView.Data" ), dataPanel );// NON-NLS setLayout( new BorderLayout() ); add( tabs, BorderLayout.CENTER ); } public void showDataTab() { tabs.setSelectedIndex( 1 ); } public void refreshTabPanel( final ElementPropertiesPanel attributeEditorPanel ) { structureAndDataTabChangeHandler .refreshTabPanel( attributeEditorPanel, context.getActiveContext(), false, true, true ); } protected ElementPropertiesPanel getAttributeEditorPanel() { return attributeEditorPanel; } private class StructureAndDataTabChangeHandler implements ChangeListener { private StructureAndDataTabChangeHandler() { } public void stateChanged( final ChangeEvent e ) { final ElementPropertiesPanel attributeEditorPanel = getAttributeEditorPanel(); if ( attributeEditorPanel == null ) { return; } final ReportDocumentContext activeContext = context.getActiveContext(); if ( activeContext == null ) { return; } final JTabbedPane tabs = (JTabbedPane) e.getSource(); if ( tabs.getSelectedIndex() == 0 ) { refreshTabPanel( attributeEditorPanel, activeContext, true, false, false ); } else { refreshTabPanel( attributeEditorPanel, activeContext, false, true, true ); } } protected void refreshTabPanel( final ElementPropertiesPanel attributeEditorPanel, final ReportDocumentContext activeContext, final boolean attributeCard, final boolean datasourceCard, final boolean expressionCard ) { attributeEditorPanel.setAllowAttributeCard( attributeCard ); attributeEditorPanel.setAllowDataSourceCard( datasourceCard ); attributeEditorPanel.setAllowExpressionCard( expressionCard ); attributeEditorPanel.reset( activeContext.getSelectionModel() ); } } }