package org.openswing.swing.miscellaneous.client; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.html.*; import org.openswing.swing.client.*; import org.openswing.swing.util.client.*; /** * <p>Title: OpenSwing Framework</p> * <p>Description: Panel that shows a licence agreement. Image icon is optional.</p> * <p>Copyright: Copyright (C) 2006 Mauro Carniel</p> * * <p> This file is part of OpenSwing Framework. * This library is free software; you can redistribute it and/or * modify it under the terms of the (LGPL) Lesser General Public * License as published by the Free Software Foundation; * * GNU LESSER GENERAL PUBLIC LICENSE * Version 2.1, February 1999 * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * The author may be contacted at: * maurocarniel@tin.it</p> * * @author Mauro Carniel * @version 1.0 */ public class LicencePanel extends JPanel { BorderLayout borderLayout1 = new BorderLayout(); JPanel topPanel = new JPanel(); JPanel mainPanel = new JPanel(); GridBagLayout gridBagLayout1 = new GridBagLayout(); JLabel labelTitle = new JLabel(); JLabel labelSubTitle = new JLabel(); ImagePanel imagePanel = null; GridBagLayout gridBagLayout2 = new GridBagLayout(); JScrollPane scrollPane = new JScrollPane(); JEditorPane controlLicence = new JEditorPane(); JRadioButton radioButtonOk = new JRadioButton(); JRadioButton radioButtonNo = new JRadioButton(); JPanel buttonsPanel = new JPanel(); JButton buttonCancel = new JButton(); JButton buttonOk = new JButton(); ButtonGroup buttonGroup1 = new ButtonGroup(); JButton buttonBack = new JButton(); /** flag used to show/hide the "back" button */ private boolean showBackButton = true; /** flag used to show/hide the "ok" button */ private boolean showOkButton = true; /** flag used to show/hide the "cancel" button */ private boolean showCancelButton = true; GridBagLayout gridBagLayout3 = new GridBagLayout(); JPanel voidPanel = new JPanel(); /** image name */ private String imageName = null; public LicencePanel() { try { jbInit(); controlLicence.setEditorKit(new HTMLEditorKit()); } catch(Exception e) { e.printStackTrace(); } } /** * Set title in bold style. It will be translated, according to ClientSettings. * @param title title in bold style */ public final void setTitle(String title) { labelTitle.setText(title); } /** * Set tip image. * @param imageName tip image */ public final void setImageName(String imageName) { this.imageName = imageName; if (imagePanel==null) { imagePanel = new ImagePanel(); topPanel.add(imagePanel, new GridBagConstraints(1, 0, 1, 2, 0.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); } imagePanel.setImageName(imageName); imagePanel.setScrollBarsPolicy(ImagePanel.SCROLLBAR_NEVER); imagePanel.setMinimumSize(new Dimension(imagePanel.getImageWidth(),imagePanel.getImageHeight())); imagePanel.setMaximumSize(new Dimension(imagePanel.getImageWidth(),imagePanel.getImageHeight())); imagePanel.setPreferredSize(new Dimension(imagePanel.getImageWidth(),imagePanel.getImageHeight())); } /** * Set subtitle. It will be translated, according to ClientSettings. * @param subTitle subtitle */ public final void setSubTitle(String subTitle) { labelSubTitle.setText(subTitle); } /** * @return title in bold style */ public final String getTitle() { return labelTitle.getText(); } /** * @return subtitle */ public final String getSubTitle() { return labelSubTitle.getText(); } /** * Set subtitle. It will be translated, according to ClientSettings. * @param licence licence text; it can be in HTML format */ public final void setLicence(String licence) { controlLicence.setText(licence); } /** * @return licence text */ public final String getLicence() { return controlLicence.getText(); } private void jbInit() throws Exception { this.setLayout(borderLayout1); topPanel.setLayout(gridBagLayout1); labelTitle.setFont(new java.awt.Font(labelSubTitle.getFont().getName(),Font.BOLD,labelSubTitle.getFont().getSize()+1)); topPanel.setBackground(Color.white); mainPanel.setLayout(gridBagLayout2); controlLicence.setEditable(false); radioButtonOk.setText(ClientSettings.getInstance().getResources().getResource("i accept the terms in the licence agreement")); radioButtonOk.addItemListener(new LicencePanel_radioButtonOk_itemAdapter(this)); radioButtonNo.setSelected(true); radioButtonNo.setText(ClientSettings.getInstance().getResources().getResource("i do not accept the terms in the licence agreement")); buttonsPanel.setLayout(gridBagLayout3); buttonCancel.setText(ClientSettings.getInstance().getResources().getResource("cancel")); buttonOk.setEnabled(false); buttonOk.setText(ClientSettings.getInstance().getResources().getResource("ok")); buttonBack.setText("< "+ClientSettings.getInstance().getResources().getResource("back")); this.add(topPanel, BorderLayout.NORTH); this.add(mainPanel, BorderLayout.CENTER); topPanel.add(labelTitle, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); topPanel.add(labelSubTitle, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 25, 5, 5), 0, 0)); mainPanel.add(scrollPane, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0 ,GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(20, 20, 0, 20), 0, 0)); scrollPane.getViewport().add(controlLicence, null); mainPanel.add(radioButtonOk, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); mainPanel.add(radioButtonNo, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0)); mainPanel.add(buttonsPanel, new GridBagConstraints(0, 3, 1, 1, 1.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); buttonsPanel.add(buttonBack, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 5, 5), 0, 0)); buttonsPanel.add(buttonOk, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 5, 5), 0, 0)); buttonsPanel.add(buttonCancel, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 5, 5), 0, 0)); buttonsPanel.add(voidPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); buttonGroup1.add(radioButtonOk); buttonGroup1.add(radioButtonNo); } void radioButtonOk_itemStateChanged(ItemEvent e) { buttonOk.setEnabled(radioButtonOk.isSelected()); } /** * Add an ItemListener to the "ok" radio button. * @param listener ItemListener added to the "ok" radio button */ public final void addOkRadioButtonItemListener(ItemListener listener) { radioButtonOk.addItemListener(listener); } /** * Add an ActionListener to the "ok" button. * @param listener ActionListener to add */ public final void addOkActionListener(ActionListener listener) { buttonOk.addActionListener(listener); } /** * Add an ActionListener to the "cancel" button. * @param listener ActionListener to add */ public final void addCancelActionListener(ActionListener listener) { buttonCancel.addActionListener(listener); } /** * Add an ActionListener to the "back" button. * @param listener ActionListener to add */ public final void addBackActionListener(ActionListener listener) { buttonBack.addActionListener(listener); } /** * @return flag used to show/hide the "back" button */ public final boolean isShowBackButton() { return showBackButton; } /** * @return flag used to show/hide the "cancel" button */ public final boolean isShowCancelButton() { return showCancelButton; } /** * @return flag used to show/hide the "ok" button */ public final boolean isShowOkButton() { return showOkButton; } /** * Set the flag used to show/hide the "ok" button. * @param showOkButton flag used to show/hide the "ok" button */ public final void setShowOkButton(boolean showOkButton) { if (this.showOkButton && !showOkButton) buttonsPanel.remove(buttonOk); else if (!this.showOkButton && showOkButton) buttonsPanel.add(buttonOk, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 5, 5), 0, 0)); buttonsPanel.revalidate(); this.showOkButton = showOkButton; } /** * Set the flag used to show/hide the "cancel" button. * @param showCancelButton flag used to show/hide the "cancel" button */ public final void setShowCancelButton(boolean showCancelButton) { if (this.showCancelButton && !showCancelButton) buttonsPanel.remove(buttonCancel); else if (!this.showCancelButton && showCancelButton) buttonsPanel.add(buttonCancel, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 5, 5), 0, 0)); buttonsPanel.revalidate(); this.showCancelButton = showCancelButton; } /** * Set the flag used to show/hide the "back" button. * @param showBackButton flag used to show/hide the "back" button */ public final void setShowBackButton(boolean showBackButton) { if (this.showBackButton && !showBackButton) buttonsPanel.remove(buttonBack); else if (!this.showBackButton && showBackButton) buttonsPanel.add(buttonBack, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 0, 5, 5), 0, 0)); buttonsPanel.revalidate(); this.showBackButton = showBackButton; } public String getImageName() { return imageName; } } class LicencePanel_radioButtonOk_itemAdapter implements java.awt.event.ItemListener { LicencePanel adaptee; LicencePanel_radioButtonOk_itemAdapter(LicencePanel adaptee) { this.adaptee = adaptee; } public void itemStateChanged(ItemEvent e) { adaptee.radioButtonOk_itemStateChanged(e); } }