/*******************************************************************************
* Copyright (c) 2011 University Of Moratuwa
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Isuru Udana - UI Integration in the Workbench
*******************************************************************************/
package org.eclipse.ecf.salvo.ui.wizards;
import org.eclipse.ecf.protocol.nntp.core.Debug;
import org.eclipse.ecf.protocol.nntp.core.ServerStoreFactory;
import org.eclipse.ecf.protocol.nntp.model.INewsgroup;
import org.eclipse.ecf.protocol.nntp.model.IServerStoreFacade;
import org.eclipse.ecf.protocol.nntp.model.NNTPException;
import org.eclipse.ecf.salvo.ui.internal.wizards.ComposeNewArticleWizardPage;
import org.eclipse.ecf.salvo.ui.internal.wizards.SelectNewsgroupWizardPage;
import org.eclipse.ecf.salvo.ui.tools.PreferencesUtil;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.Wizard;
/**
* This class is responsible for providing the "Ask A Question" wizard.
*
* @author isuru
*
*/
public class AskAQuestionWizard extends Wizard {
private SelectNewsgroupWizardPage selectNewsgroupWizardPage;
private ComposeNewArticleWizardPage composeNewArticleWizardPage;
public AskAQuestionWizard() {
super();
setNeedsProgressMonitor(true);
setWindowTitle("Ask a Question");
}
@Override
public void addPages() {
selectNewsgroupWizardPage = new SelectNewsgroupWizardPage();
composeNewArticleWizardPage = new ComposeNewArticleWizardPage();
addPage(selectNewsgroupWizardPage);
addPage(composeNewArticleWizardPage);
}
@Override
public boolean canFinish() {
if (composeNewArticleWizardPage.isValuesSet()) {
return true;
}
return false;
}
@Override
public boolean performFinish() {
INewsgroup group = selectNewsgroupWizardPage.getSelectedNewsgroup();
if (group != null) {
// Saving preferences
PreferencesUtil.instance().savePluginSettings(
"recentSelectedNewsgroup", group.getNewsgroupName());
PreferencesUtil.instance().savePluginSettings(
"recentSelectedServer", group.getServer().getAddress());
String subject = composeNewArticleWizardPage.getSubject();
String body = composeNewArticleWizardPage.getBodyText();
IServerStoreFacade serverStoreFacade = ServerStoreFactory
.instance().getServerStoreFacade();
try {
// posting article
serverStoreFacade.postNewArticle(new INewsgroup[] { group },
subject, body);
// Subscribe newsgroup
if (!group.isSubscribed()
&& composeNewArticleWizardPage.doSubscribe()) {
serverStoreFacade.subscribeNewsgroup(group);
}
MessageDialog.openInformation(
getShell(),
"Article Posted",
"Your question is posted to "
+ group.getNewsgroupName());
} catch (NNTPException e) {
MessageDialog.openError(
getShell(),
"Problem posting message",
"The message could not be posted. \n\r"
+ e.getMessage());
Debug.log(this.getClass(), e);
e.printStackTrace();
}
} else {
MessageDialog.openError(getShell(), "Problem posting message",
"The message could not be posted. \n\r Newsgroup Failure");
}
return true;
}
}