package org.docear.plugin.services.features.user.action; import java.awt.Dimension; import java.awt.event.ActionEvent; import org.docear.plugin.core.ui.wizard.Wizard; import org.docear.plugin.core.ui.wizard.WizardSession; import org.docear.plugin.core.ui.wizard.WizardPageDescriptor; import org.docear.plugin.services.features.documentretrieval.DocumentRetrievalController; import org.docear.plugin.services.features.user.DocearLocalUser; import org.docear.plugin.services.features.user.DocearUser; import org.docear.plugin.services.features.user.DocearUserController; import org.docear.plugin.services.features.user.view.EnableServicesPagePanel; import org.freeplane.core.ui.components.UITools; import org.freeplane.plugin.workspace.WorkspaceController; import org.freeplane.plugin.workspace.actions.AWorkspaceAction; public class DocearUserServicesAction extends AWorkspaceAction { private static final long serialVersionUID = 1L; public static final String KEY = "docear.action.user.services"; public DocearUserServicesAction() { super(KEY); } public void actionPerformed(ActionEvent event) { DocearUser user = DocearUserController.getActiveUser(); showServicesWizard(user); } private static void initWizard(Wizard wizard) { WizardPageDescriptor desc = new WizardPageDescriptor("page.services", new EnableServicesPagePanel()) { public WizardPageDescriptor getNextPageDescriptor(WizardSession context) { context.get(DocearUser.class).setBackupEnabled(((EnableServicesPagePanel) getPage()).isOnlineBackupEnabled()); context.get(DocearUser.class).setSynchronizationEnabled(((EnableServicesPagePanel) getPage()).isSynchronizationEnabled()); context.get(DocearUser.class).setRecommendationsEnabled(((EnableServicesPagePanel) getPage()).isRecommendationsEnabled()); context.get(DocearUser.class).setCollaborationEnabled(((EnableServicesPagePanel) getPage()).isCollaborationEnabled()); return Wizard.FINISH_PAGE; } }; desc.getPage().setPreferredSize(new Dimension(640,240)); wizard.registerWizardPanel(desc); wizard.setStartPage(desc.getIdentifier()); } public static void showServicesWizard(DocearUser user) { if(user == null) { throw new IllegalArgumentException("NULL"); } if(user instanceof DocearLocalUser) { DocearUserRegistrationAction.showRegistrationWizard(); return; } final Wizard wiz = new Wizard(UITools.getFrame()); initWizard(wiz); wiz.getSession().set(DocearUser.class, user); new Thread(new Runnable() { public void run() { int ret = wiz.show(); if(ret == Wizard.OK_OPTION) { WorkspaceController.save(); if (DocumentRetrievalController.getController() != null && DocumentRetrievalController.getView() != null) { DocumentRetrievalController.getController().refreshDocuments(); } } } }).start(); } }