/*
* Copyright (c) 2011 by Stefan Laubenberger.
*
* Test is free software: you can redistribute it and/or modify
* it under the terms of the General Public License v2.0.
*
* Test is distributed together with Tyr 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 General Public License for more details:
* <http://www.gnu.org/licenses>
*
* This distribution is available at:
* <http://code.google.com/p/tyr/>
* <http://dev.laubenberger.net/tyr/>
*
* Contact information:
* Stefan Laubenberger
* Bullingerstrasse 53
* CH-8004 Zuerich
*
* <http://www.laubenberger.net>
*
* <laubenberger@gmail.com>
*/
package net.laubenberger.tyr.module.test;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import net.laubenberger.bogatyr.helper.HelperLog;
import net.laubenberger.bogatyr.helper.HelperString;
import net.laubenberger.bogatyr.service.localizer.Localizer;
import net.laubenberger.bogatyr.view.swing.ActionAbstract;
import net.laubenberger.bogatyr.view.swing.Button;
import net.laubenberger.bogatyr.view.swing.Dialog;
import net.laubenberger.bogatyr.view.swing.Group;
import net.laubenberger.bogatyr.view.swing.Label;
import net.laubenberger.bogatyr.view.swing.Panel;
import net.laubenberger.bogatyr.view.swing.pane.PaneScroll;
import net.laubenberger.tyr.model.Icon;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Dialog to display various Swing components.
*
* @author Stefan Laubenberger
* @version 0.8.0 (20110121)
* @since 0.0.1
*/
public class DialogComponents extends Dialog {
private static final long serialVersionUID = -3019282154637316065L;
private static final Logger log = LoggerFactory.getLogger(DialogComponents.class);
final Test test;
final Localizer localizer;
public DialogComponents(final Test test) {
super(test.getOwner());
if (log.isTraceEnabled()) log.trace(HelperLog.constructor(test));
this.test = test;
localizer = test.getModel().getLocalizer();
}
{
// setAlwaysOnTop(true);
// setResizable(false);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
/*
* Private methods
*/
private void createLayout() {
getContentPane().removeAll();
setTitle(test.getModel().getName() + HelperString.COLON + HelperString.SPACE
+ localizer.getValue(HelperResource.RES_ACTION_COMPONENTS));
final Panel panel = new Panel(new BorderLayout());
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 5, 10));
final Panel panelCenter = new Panel(new GridLayout(0, 2, 0, 5));
panelCenter.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
panelCenter.add(new Label("Icon")); //$NON-NLS-1$
panelCenter.add(new JLabel(test.getCallback().getScaledIcon(test.getLogo())));
panelCenter.add(new Label("JLabel")); //$NON-NLS-1$
panelCenter.add(new JLabel("label")); //$NON-NLS-1$
panelCenter.add(new Label("JTextField")); //$NON-NLS-1$
panelCenter.add(new JTextField("text field")); //$NON-NLS-1$
panelCenter.add(new Label("JPasswordField")); //$NON-NLS-1$
panelCenter.add(new JPasswordField("password field")); //$NON-NLS-1$
final JProgressBar pb = new JProgressBar();
pb.setIndeterminate(true);
panelCenter.add(new Label("JProgressBar")); //$NON-NLS-1$
panelCenter.add(pb);
panelCenter.add(new Label("JButton")); //$NON-NLS-1$
panelCenter.add(new JButton("button")); //$NON-NLS-1$
panelCenter.add(new Label("JRadioButton")); //$NON-NLS-1$
panelCenter.add(new JRadioButton("radio button")); //$NON-NLS-1$
panelCenter.add(new Label("JCheckBox")); //$NON-NLS-1$
panelCenter.add(new JCheckBox("check box")); //$NON-NLS-1$
panelCenter.add(new Label("JSlider")); //$NON-NLS-1$
panelCenter.add(new JSlider(0, 100));
panelCenter.add(new Label("JSpinner")); //$NON-NLS-1$
panelCenter.add(new JSpinner());
panelCenter.add(new Label("JComboBox")); //$NON-NLS-1$
panelCenter.add(new JComboBox(new String[] { "Value1", "Value2", "Value3" })); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
panel.add(new PaneScroll(panelCenter), BorderLayout.CENTER);
final Group group = new Group(new Insets(0, 0, 0, 0), new Button(new ActionClose()));
panel.add(group, BorderLayout.SOUTH);
getContentPane().add(panel);
// pack();
}
/*
* Overridden methods
*/
@Override
public void createAndShowGUI() {
if (log.isDebugEnabled()) log.debug(HelperLog.methodStart());
createLayout();
pack();
test.getDialogs().add(this);
super.createAndShowGUI();
if (log.isDebugEnabled()) log.debug(HelperLog.methodExit());
}
@Override
public void clearAndHide() {
if (log.isDebugEnabled()) log.debug(HelperLog.methodStart());
test.getDialogs().remove(this);
super.clearAndHide();
if (log.isDebugEnabled()) log.debug(HelperLog.methodExit());
}
/*
* Inner classes
*/
private class ActionClose extends ActionAbstract {
private static final long serialVersionUID = 3521248435384827073L;
public ActionClose() {
super(localizer.getValue(HelperResource.RES_ACTION_CLOSE), test.getCallback().getScaledIcon(Icon.OK),
localizer.getTooltip(HelperResource.RES_ACTION_CLOSE), localizer
.getMnemonic(HelperResource.RES_ACTION_CLOSE));
}
@Override
public void actionPerformed(final ActionEvent e) {
clearAndHide();
}
}
}