package de.juwimm.cms.gui; import static de.juwimm.cms.client.beans.Application.getBean; import static de.juwimm.cms.common.Constants.rb; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import org.apache.log4j.Logger; import org.jvnet.flamingo.common.JCommandButton; import org.jvnet.flamingo.common.icon.ImageWrapperResizableIcon; import org.jvnet.flamingo.common.model.ActionToggleButtonModel; import de.juwimm.cms.Messages; import de.juwimm.cms.client.beans.Beans; import de.juwimm.cms.common.Constants; import de.juwimm.cms.common.UserRights; import de.juwimm.cms.deploy.actions.ExportFullThread; import de.juwimm.cms.deploy.actions.ImportFullThread; import de.juwimm.cms.gui.controls.ColapsePanel; import de.juwimm.cms.gui.ribbon.CommandButton; import de.juwimm.cms.util.ActionHub; import de.juwimm.cms.util.Communication; import de.juwimm.cms.util.UIConstants; /** * @author <a href="florin.zalum@juwimm.com">Florin Zalum</a> * @version $Id$ */ public class OptionsDialog extends JDialog implements ActionListener { private static final long serialVersionUID = 1042287156390559221L; private static Logger log = Logger.getLogger(OptionsDialog.class); private JLabel lblPasswd; private JCheckBox changePasswordCheckBox; private JLabel lblPasswdRepeat; private JPasswordField txtNewPassword1; private JPasswordField txtNewPassword2; private String whom; private boolean isImportExportEnabled = true; private JCommandButton generalOption; private JCommandButton importExportOption; private JCommandButton userOption; private Communication comm; private JButton clearCacheButton; private JButton reloadDcfButton; private JButton importButton; private JButton exportButton; private JButton changePasswordButton; private JPanel ribbonBandContainer; private JPanel optionsContainer; private JPanel generalPanel; private JPanel importExportPanel; private JPanel userInformationPanel; private ColapsePanel changePasswordPanel; public static final String CMS_CLEAR_CACHE = "cmsclearcachenow!"; public static final String CMS_RELOAD_DCF = "cmsreloaddcf"; public static final String CMS_EXPORT_ALL = "cmsexportallthefuck"; public static final String CMS_IMPORT_ALL = "cmsimportallthisshittystuffassoonaspossibletogetitrunning"; public OptionsDialog(final Communication comm) { super(UIConstants.getMainFrame(), Constants.rb.getString("ribbon.options"), true); this.comm = comm; this.whom = comm.getUser().getUserName(); ActionHub.addActionListener(this); Dimension size = new Dimension(265, 240); this.setSize(size); this.setIconImage(UIConstants.CMS.getImage()); this.setLocationRelativeTo(UIConstants.getMainFrame()); this.setMinimumSize(size); this.setResizable(false); isImportExportEnabled = userIsSiteRoot(); generalOption = new CommandButton(Constants.rb.getString("optionsDialog.generalOption"), ImageWrapperResizableIcon.getIcon(UIConstants.RIBBON_GENERAL_OPTIONS.getImage(), new Dimension(32, 32))); importExportOption = new CommandButton(Constants.rb.getString("optionsDialog.importExportOption"), ImageWrapperResizableIcon.getIcon(UIConstants.RIBBON_IMPORT_EXPORT_OPTIONS.getImage(), new Dimension(32, 32))); userOption = new CommandButton(Constants.rb.getString("optionsDialog.userOption"), ImageWrapperResizableIcon.getIcon(UIConstants.RIBBON_USER_OPTIONS.getImage(), new Dimension(32, 32))); if (!isImportExportEnabled) { importExportOption.setEnabled(false); } initOptionsRibbonsListeners(); ribbonBandContainer = new JPanel(); optionsContainer = new JPanel(); GridBagLayout gridBagLayout = new GridBagLayout(); ribbonBandContainer.setLayout(gridBagLayout); GridBagConstraints generalOptionConstraint = new GridBagConstraints(); GridBagConstraints importExportOptionConstraint = new GridBagConstraints(); GridBagConstraints userInformationOptionConstraint = new GridBagConstraints(); generalOptionConstraint.insets = new Insets(4, 4, 4, 4); importExportOptionConstraint.insets = new Insets(4, 4, 4, 4); userInformationOptionConstraint.insets = new Insets(4, 4, 4, 4); generalOptionConstraint.anchor = GridBagConstraints.WEST; importExportOptionConstraint.anchor = GridBagConstraints.WEST; userInformationOptionConstraint.anchor = GridBagConstraints.WEST; importExportOptionConstraint.gridx = 1; userInformationOptionConstraint.gridx = 2; ribbonBandContainer.setBorder(BorderFactory.createLineBorder(Color.gray)); ribbonBandContainer.add(generalOption, generalOptionConstraint); ribbonBandContainer.add(importExportOption, importExportOptionConstraint); ribbonBandContainer.add(userOption, userInformationOptionConstraint); getContentPane().setLayout(new BorderLayout()); getContentPane().add(ribbonBandContainer, BorderLayout.NORTH); getContentPane().add(optionsContainer, BorderLayout.CENTER); constructGeneralOptionsPane(); constructImportExportOptionsPane(); constructUserInformationPane(); optionsContainer.add(generalPanel); optionsContainer.add(importExportPanel); optionsContainer.add(userInformationPanel); generalPanel.setVisible(true); importExportPanel.setVisible(false); userInformationPanel.setVisible(false); initListeners(); } private void constructGeneralOptionsPane() { generalPanel = new JPanel(new BorderLayout()); clearCacheButton = new JButton(Constants.rb.getString("optionsDialog.generalOption.clearcache")); reloadDcfButton = new JButton(Constants.rb.getString("optionsDialog.generalOption.reloadDcf")); generalPanel.add(clearCacheButton, BorderLayout.CENTER); generalPanel.add(reloadDcfButton, BorderLayout.SOUTH); } private void constructImportExportOptionsPane() { importExportPanel = new JPanel(new BorderLayout()); importButton = new JButton(Constants.rb.getString("optionsDialog.importOption")); exportButton = new JButton(Constants.rb.getString("optionsDialog.exportOption")); importExportPanel.add(importButton, BorderLayout.CENTER); importExportPanel.add(exportButton, BorderLayout.SOUTH); } private void constructUserInformationPane() { userInformationPanel = new JPanel(new GridBagLayout()); changePasswordPanel = new ColapsePanel(); changePasswordPanel.setLayout(new GridBagLayout()); changePasswordPanel.setText(Messages.getString("frame.changePasswd.whomMessage", whom)); //changePasswordPanel.setBorder(new MyBorder(BorderFactory.createEtchedBorder(Color.white, new Color(165, 163, 151)))); lblPasswd = new JLabel(); lblPasswdRepeat = new JLabel(); txtNewPassword1 = new JPasswordField(); txtNewPassword2 = new JPasswordField(); changePasswordButton = new JButton(Messages.getString("menubar.extras.changePassword")); changePasswordCheckBox = new JCheckBox(Messages.getString("frame.changePasswd.whomMessage", whom)); lblPasswdRepeat.setText(rb.getString("frame.changePasswd.newPasswd")); lblPasswd.setText(rb.getString("frame.changePasswd.repeatPasswd")); //userInformationPanel.add(changePasswordCheckBox, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(4, 4, 4, 4), 0, 0)); userInformationPanel.add(changePasswordPanel, new GridBagConstraints(0, 1, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(4, 4, 4, 4), 0, 0)); changePasswordPanel.add(lblPasswdRepeat, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 4, 0, 4), 0, 0)); changePasswordPanel.add(lblPasswd, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4, 4, 0, 0), 0, 0)); changePasswordPanel.add(changePasswordButton, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(4, 4, 4, 4), 0, 0)); changePasswordPanel.add(txtNewPassword1, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4, 4, 0, 4), 0, 0)); changePasswordPanel.add(txtNewPassword2, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4, 4, 0, 4), 0, 0)); } private void initListeners() { clearCacheButton.addActionListener(this); reloadDcfButton.addActionListener(this); importButton.addActionListener(this); exportButton.addActionListener(this); clearCacheButton.setActionCommand(CMS_CLEAR_CACHE); reloadDcfButton.setActionCommand(CMS_RELOAD_DCF); importButton.setActionCommand(CMS_IMPORT_ALL); exportButton.setActionCommand(CMS_EXPORT_ALL); changePasswordCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { enableChangePasswordpanel(changePasswordCheckBox.isSelected()); } }); changePasswordButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cmdChangeActionPerformed(e); } }); } private void enableChangePasswordpanel(boolean state) { // txtNewPassword1.setEnabled(state); // txtNewPassword2.setEnabled(state); // cmdChange.setEnabled(state); changePasswordPanel.setVisible(state); } /** * */ private void initOptionsRibbonsListeners() { generalOption.setActionModel(new ActionToggleButtonModel(false)); if (isImportExportEnabled) { importExportOption.setActionModel(new ActionToggleButtonModel(false)); } userOption.setActionModel(new ActionToggleButtonModel(false)); generalOption.getActionModel().setSelected(true); generalOption.getActionModel().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (isImportExportEnabled) { importExportOption.getActionModel().setSelected(false); } generalOption.getActionModel().setSelected(true); userOption.getActionModel().setSelected(false); generalPanel.setVisible(true); importExportPanel.setVisible(false); userInformationPanel.setVisible(false); pack(); } }); if (isImportExportEnabled) { importExportOption.getActionModel().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { importExportOption.getActionModel().setSelected(true); generalOption.getActionModel().setSelected(false); userOption.getActionModel().setSelected(false); generalPanel.setVisible(false); importExportPanel.setVisible(true); userInformationPanel.setVisible(false); pack(); } }); } userOption.getActionModel().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (isImportExportEnabled) { importExportOption.getActionModel().setSelected(false); } generalOption.getActionModel().setSelected(false); userOption.getActionModel().setSelected(true); generalPanel.setVisible(false); importExportPanel.setVisible(false); userInformationPanel.setVisible(true); pack(); } }); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(CMS_CLEAR_CACHE)) { comm.clearSvgCache(); try { if (comm.getDbHelper().clearMyCache()) { JOptionPane.showMessageDialog(UIConstants.getMainFrame(), rb.getString("panel.cmsMenubar.cacheCleared"), rb.getString("dialog.title"), JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(UIConstants.getMainFrame(), rb.getString("exception.cantClearCache"), rb.getString("dialog.title"), JOptionPane.ERROR_MESSAGE); } } catch (Exception exe) { if (log.isDebugEnabled()) { log.debug(exe.getMessage()); } } } else if (e.getActionCommand().equals(CMS_RELOAD_DCF)) { PanLogin.loadTemplates(false); ActionHub.fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, Constants.ACTION_VIEW_EDITOR)); } else if (e.getActionCommand().equals(CMS_EXPORT_ALL)) { new ExportFullThread().start(); //EXPORT ALL } else if (e.getActionCommand().equals(CMS_IMPORT_ALL)) { new ImportFullThread().start(); //IMPORT ALL } } private void cmdChangeActionPerformed(ActionEvent e) { if (String.copyValueOf(txtNewPassword1.getPassword()).equals(String.copyValueOf(txtNewPassword2.getPassword()))) { try { ((Communication) getBean(Beans.COMMUNICATION)).changePassword(whom, String.copyValueOf(txtNewPassword2.getPassword())); } catch (Exception ex) { JOptionPane.showMessageDialog(this, rb.getString("frame.changePasswd.msgError") + "\n" + ex.getMessage().toString(), rb.getString("dialog.title"), JOptionPane.ERROR_MESSAGE); return; } UIConstants.setStatusInfo(rb.getString("frame.changePasswd.msgSucc")); JOptionPane.showMessageDialog(this, rb.getString("frame.changePasswd.msgSucc"), rb.getString("dialog.title"), JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(this, rb.getString("frame.changePasswd.msgNoMatch"), rb.getString("dialog.title"), JOptionPane.ERROR_MESSAGE); txtNewPassword1.setText(""); txtNewPassword2.setText(""); txtNewPassword1.requestFocus(); } } private boolean userIsSiteRoot() { return comm.isUserInRole(UserRights.SITE_ROOT); } }