/*
* 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 - 2016 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.reporting.designer.core.editor.drilldown.swing;
import java.awt.GridLayout;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SpringLayout;
import org.pentaho.reporting.designer.core.Messages;
import org.pentaho.reporting.designer.core.util.FormulaEditorPanel;
/**
* Panel with "Tooltip" combo box and "Panel" formula editor for drill down forms.
*
* @author Aleksandr Kozlov
*/
public class TooltipAndTargetPanel extends JPanel {
/** Label with "Target" field. */
private JLabel targetLabel;
/** Combo box for "Target" value. */
private JComboBox targetComboBox;
/** Label with "Tooltip" field. */
private JLabel tooltipLabel;
/** Editor for "Target" formula. */
private FormulaEditorPanel tooltipPanel;
/**
* Create default panel with "Tooltip" combo box and "Panel" formula editor for drill down forms.
*/
public TooltipAndTargetPanel() {
super();
createComponents();
layoutComponents();
}
/**
* Create and initialize inner components.
*/
private void createComponents() {
targetLabel = createTargetLabel();
targetComboBox = createTargetComboBox();
tooltipLabel = createTooltipLabel();
tooltipPanel = createTooltipPanel();
}
/**
* Create label with "Target" field.
*
* @return created label
*/
private JLabel createTargetLabel() {
return new JLabel( Messages.getString( "DrillDownDialog.TargetInput.Label" ) );
}
/**
* Create combo box for "Target" value.
*
* @return created combo box
*/
private JComboBox createTargetComboBox() {
JComboBox comboBox = new JComboBox();
comboBox.addItem( "" );
comboBox.addItem( "=\"_TOP\"" );
comboBox.addItem( "=\"_BLANK\"" );
comboBox.addItem( "=\"_PARENT\"" );
comboBox.setEditable( true );
return comboBox;
}
/**
* Create label with "Tooltip" field.
*
* @return created label
*/
private JLabel createTooltipLabel() {
return new JLabel( Messages.getString( "DrillDownDialog.TooltipInput.Label" ) );
}
/**
* Create editor for "Target" formula.
*
* @return created editor
*/
private FormulaEditorPanel createTooltipPanel() {
return new FormulaEditorPanel();
}
/**
* Layout all inner components.
*/
public void layoutComponents() {
final int basicIndent = 0;
final int verticalGap = 2;
final int horizontalGap = 4;
setLayout( new GridLayout( 1, 2 ) );
JPanel tgPanel = new JPanel();
JPanel ttPanel = new JPanel();
add( tgPanel );
add( ttPanel );
SpringLayout targetLayout = new SpringLayout();
tgPanel.setLayout( targetLayout );
tgPanel.add( targetLabel );
targetLayout.putConstraint( SpringLayout.NORTH, targetLabel, basicIndent, SpringLayout.NORTH, tgPanel );
targetLayout.putConstraint( SpringLayout.EAST, targetLabel, -horizontalGap, SpringLayout.EAST, tgPanel );
targetLayout.putConstraint( SpringLayout.WEST, targetLabel, basicIndent, SpringLayout.WEST, tgPanel );
tgPanel.add( targetComboBox );
targetLayout.putConstraint( SpringLayout.NORTH, targetComboBox, verticalGap, SpringLayout.SOUTH, targetLabel );
targetLayout.putConstraint( SpringLayout.EAST, targetComboBox, -horizontalGap, SpringLayout.EAST, tgPanel );
targetLayout.putConstraint( SpringLayout.WEST, targetComboBox, basicIndent, SpringLayout.WEST, tgPanel );
targetLayout.putConstraint( SpringLayout.SOUTH, tgPanel, basicIndent, SpringLayout.SOUTH, targetComboBox ); // Order is important! --Kaa
SpringLayout tooltipLayout = new SpringLayout();
ttPanel.setLayout( tooltipLayout );
ttPanel.add( tooltipLabel );
tooltipLayout.putConstraint( SpringLayout.NORTH, tooltipLabel, basicIndent, SpringLayout.NORTH, ttPanel );
tooltipLayout.putConstraint( SpringLayout.EAST, tooltipLabel, basicIndent, SpringLayout.EAST, ttPanel );
tooltipLayout.putConstraint( SpringLayout.WEST, tooltipLabel, 0, SpringLayout.WEST, ttPanel );
ttPanel.add( tooltipPanel );
tooltipLayout.putConstraint( SpringLayout.NORTH, tooltipPanel, verticalGap, SpringLayout.SOUTH, tooltipLabel );
tooltipLayout.putConstraint( SpringLayout.EAST, tooltipPanel, basicIndent, SpringLayout.EAST, ttPanel );
tooltipLayout.putConstraint( SpringLayout.WEST, tooltipPanel, 0, SpringLayout.WEST, ttPanel );
tooltipLayout.putConstraint( SpringLayout.SOUTH, ttPanel, basicIndent, SpringLayout.SOUTH, tooltipPanel ); // Order is important! --Kaa
}
/**
* Get combo box for "Target" value.
*
* @return combo box for "Target" value
*/
public JComboBox getTargetComboBox() {
return targetComboBox;
}
/**
* Get editor for "Target" formula.
*
* @return created editor
*/
public FormulaEditorPanel getTooltipPanel() {
return tooltipPanel;
}
/**
* Hide content in the case if DrillDownModel.isLimitedEditor() is true.
*/
public void hideContent() {
setLayout( new SpringLayout() );
removeAll();
}
}