package org.docear.plugin.services.features.user.view; import java.awt.Color; import java.awt.Cursor; import java.awt.Font; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.ImageIcon; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import org.docear.plugin.core.DocearController; import org.docear.plugin.core.ui.wizard.AWizardPage; import org.docear.plugin.core.ui.wizard.WizardSession; import org.docear.plugin.services.features.user.DocearUser; import org.freeplane.core.util.TextUtils; import com.jgoodies.forms.factories.FormFactory; import com.jgoodies.forms.layout.ColumnSpec; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.RowSpec; public class EnableServicesPagePanel extends AWizardPage { private static final long serialVersionUID = 1L; private JCheckBox chckbxCollaboration; private JCheckBox chckbxOnlineBackup; private JCheckBox chckbxSynchronization; private JCheckBox chckbxRecommendations; private JPanel panel_1; private JPanel panel_2; private JPanel panel_3; private JLabel lblReclabel; private JLabel lblIconRecommendations; private JLabel lblBackup; private JLabel lblIconBackup; /*********************************************************************************** * CONSTRUCTORS **********************************************************************************/ public EnableServicesPagePanel() { setBackground(Color.WHITE); setLayout(new FormLayout(new ColumnSpec[] { FormFactory.RELATED_GAP_COLSPEC, FormFactory.UNRELATED_GAP_COLSPEC, FormFactory.DEFAULT_COLSPEC, FormFactory.RELATED_GAP_COLSPEC, ColumnSpec.decode("12dlu:grow"),}, new RowSpec[] { FormFactory.PARAGRAPH_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,})); JLabel lblServicesoptional = new JLabel(TextUtils.getText("docear.setup.wizard.register.services")); lblServicesoptional.setFont(new Font("Tahoma", Font.BOLD, 11)); add(lblServicesoptional, "2, 2, 4, 1"); panel_1 = new JPanel(); panel_1.setBackground(Color.WHITE); add(panel_1, "3, 4, 3, 1, fill, fill"); panel_1.setLayout(new FormLayout(new ColumnSpec[] { FormFactory.DEFAULT_COLSPEC, FormFactory.RELATED_GAP_COLSPEC, FormFactory.DEFAULT_COLSPEC, ColumnSpec.decode("20dlu"), ColumnSpec.decode("default:grow"),}, new RowSpec[] { FormFactory.DEFAULT_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,})); chckbxRecommendations = new JCheckBox(); panel_1.add(chckbxRecommendations, "1, 1, default, top"); chckbxRecommendations.setSelected(true); chckbxRecommendations.setBackground(Color.WHITE); panel_2 = new JPanel(); panel_2.setBackground(Color.WHITE); panel_1.add(panel_2, "3, 1, fill, fill"); panel_2.setLayout(new FormLayout(new ColumnSpec[] { FormFactory.DEFAULT_COLSPEC, FormFactory.RELATED_GAP_COLSPEC, FormFactory.DEFAULT_COLSPEC,}, new RowSpec[] { RowSpec.decode("default:grow"),})); lblReclabel = new JLabel(TextUtils.getText("docear.setup.wizard.register.feature.recommendations")); panel_2.add(lblReclabel, "1, 1"); lblIconRecommendations = new JLabel(new ImageIcon(DocearController.class.getResource("/images/question_16.png"))); lblIconRecommendations.addMouseListener(getHelpMouseListener()); lblIconRecommendations.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); //panel_2.add(lblIconRecommendations, "3, 1"); chckbxSynchronization = new JCheckBox(TextUtils.getText("docear.setup.wizard.register.feature.synchronization")); panel_1.add(chckbxSynchronization, "5, 1, default, top"); chckbxSynchronization.setBackground(Color.WHITE); chckbxSynchronization.setSelected(true); chckbxOnlineBackup = new JCheckBox(); panel_1.add(chckbxOnlineBackup, "1, 2, default, top"); chckbxOnlineBackup.setSelected(true); chckbxOnlineBackup.setBackground(Color.WHITE); panel_3 = new JPanel(); panel_3.setBackground(Color.WHITE); panel_1.add(panel_3, "3, 2, fill, fill"); panel_3.setLayout(new FormLayout(new ColumnSpec[] { FormFactory.DEFAULT_COLSPEC, FormFactory.RELATED_GAP_COLSPEC, FormFactory.DEFAULT_COLSPEC,}, new RowSpec[] { RowSpec.decode("default:grow"),})); lblBackup = new JLabel(TextUtils.getText("docear.setup.wizard.register.feature.backup")); panel_3.add(lblBackup, "1, 1"); lblIconBackup = new JLabel(new ImageIcon(DocearController.class.getResource("/images/question_16.png"))); lblIconBackup.setBackground(Color.WHITE); lblIconBackup.addMouseListener(getHelpMouseListener()); lblIconBackup.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); //panel_3.add(lblIconBackup, "3, 1"); chckbxCollaboration = new JCheckBox(TextUtils.getText("docear.setup.wizard.register.feature.collaboration")); panel_1.add(chckbxCollaboration, "5, 2, default, top"); chckbxCollaboration.setBackground(Color.WHITE); chckbxCollaboration.setSelected(true); } /*********************************************************************************** * METHODS **********************************************************************************/ private MouseListener getHelpMouseListener() { return new MouseListener() { public void mouseReleased(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseClicked(MouseEvent e) { if(e.getSource() == lblIconRecommendations) { //DOCEAR - todo: show recommendations help } else if(e.getSource() == lblIconBackup) { //DOCEAR - todo: show backup help } } }; } private void initFields(DocearUser user) { if(user != null) { chckbxCollaboration.setSelected(user.isCollaborationEnabled()); chckbxRecommendations.setSelected(user.isRecommendationsEnabled()); chckbxOnlineBackup.setSelected(user.isBackupEnabled()); chckbxSynchronization.setSelected(user.isSynchronizationEnabled()); } else { chckbxCollaboration.setSelected(true); chckbxRecommendations.setSelected(true); chckbxOnlineBackup.setSelected(true); chckbxSynchronization.setSelected(true); } } public boolean isOnlineBackupEnabled() { return chckbxOnlineBackup.isSelected(); } public boolean isRecommendationsEnabled() { return chckbxRecommendations.isSelected(); } public boolean isCollaborationEnabled() { return chckbxCollaboration.isSelected(); } public boolean isSynchronizationEnabled() { return chckbxSynchronization.isSelected(); } /*********************************************************************************** * REQUIRED METHODS FOR INTERFACES **********************************************************************************/ @Override public String getTitle() { return TextUtils.getText("docear.wizard.services.title"); } @Override public void preparePage(WizardSession context) { initFields(context.get(DocearUser.class)); context.setWizardTitle(getTitle()); context.getBackButton().setVisible(false); context.getNextButton().setText(TextUtils.getRawText("docear.setup.wizard.controls.finish")); } }