/*==========================================================================*\
| $Id: SubmitterUIPlugin.java,v 1.3 2010/12/06 21:08:41 aallowat Exp $
|*-------------------------------------------------------------------------*|
| Copyright (C) 2006-2009 Virginia Tech
|
| This file is part of Web-CAT Eclipse Plugins.
|
| Web-CAT is free software; you can redistribute it and/or modify
| it under the terms of the GNU General Public License as published by
| the Free Software Foundation; either version 2 of the License, or
| (at your option) any later version.
|
| Web-CAT 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 General Public License for more details.
|
| You should have received a copy of the GNU General Public License along
| with Web-CAT; if not, see <http://www.gnu.org/licenses/>.
\*==========================================================================*/
package org.webcat.eclipse.submitter.ui;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.webcat.eclipse.submitter.core.RunnableContextLongRunningTaskManager;
import org.webcat.eclipse.submitter.core.SubmitterCore;
import org.webcat.eclipse.submitter.ui.dialogs.SubmissionParserErrorDialog;
import org.webcat.eclipse.submitter.ui.i18n.Messages;
import org.webcat.eclipse.submitter.ui.wizards.SubmitterWizard;
import org.webcat.submitter.Submitter;
//--------------------------------------------------------------------------
/**
* The main plug-in class for the submitter user interface plug-in.
*
* @author Tony Allevato (Virginia Tech Computer Science)
* @author latest changes by: $Author: aallowat $
* @version $Revision: 1.3 $ $Date: 2010/12/06 21:08:41 $
*/
public class SubmitterUIPlugin extends AbstractUIPlugin
{
//~ Constructors ..........................................................
// ----------------------------------------------------------
/**
* Initializes a new instance of the SubmitterUIPlugin.
*/
public SubmitterUIPlugin()
{
super();
plugin = this;
try
{
resourceBundle = ResourceBundle.getBundle(PLUGIN_ID +
".SubmitterUIPluginResources"); //$NON-NLS-1$
}
catch(MissingResourceException x)
{
resourceBundle = null;
}
}
//~ Methods ...............................................................
// ----------------------------------------------------------
/**
* Returns the shared instance of the plug-in.
*
* @return the shared instance of the plug-in
*/
public static SubmitterUIPlugin getDefault()
{
return plugin;
}
// ----------------------------------------------------------
/**
* Returns the string from the plugin's resource bundle, or the key itself
* if not found.
*
* @param key the key of the string to return
* @return the string with the specified key, or the key itself if the
* string was not found
*/
public static String getResourceString(String key)
{
ResourceBundle bundle = SubmitterUIPlugin.getDefault()
.getResourceBundle();
try
{
return (bundle != null) ? bundle.getString(key) : key;
}
catch(MissingResourceException e)
{
return key;
}
}
// ----------------------------------------------------------
/**
* Gets the plug-in's resource bundle.
*
* @return the plug-in's resource bundle
*/
public ResourceBundle getResourceBundle()
{
return resourceBundle;
}
// ----------------------------------------------------------
/**
* Initializes the submission engine and invokes the submission wizard.
*
* @param shell the shell that will be the parent to the wizard
* @param project the Eclipse project to be submitted
*/
public void spawnSubmissionUI(Shell shell, IProject project)
{
URL url;
Submitter engine = new Submitter();
try
{
url = new URL(SubmitterCore.getDefault().getOption(
SubmitterCore.DEFINITIONS_URL));
ProgressMonitorDialog dlg = new ProgressMonitorDialog(shell);
RunnableContextLongRunningTaskManager taskManager =
new RunnableContextLongRunningTaskManager(dlg);
engine.setLongRunningTaskManager(taskManager);
engine.readSubmissionTargets(url);
engine.setLongRunningTaskManager(null);
}
catch(MalformedURLException e)
{
MessageDialog.openWarning(null, Messages.PLUGINUI_NO_DEF_URL_TITLE,
Messages.PLUGINUI_NO_DEF_URL_DESCRIPTION);
return;
}
catch(Throwable e)
{
SubmissionParserErrorDialog dlg = new SubmissionParserErrorDialog(
shell, e);
dlg.open();
return;
}
SubmitterWizard wizard = new SubmitterWizard();
wizard.init(engine, project);
// Instantiates the wizard container with the wizard and opens it
WizardDialog dialog = new WizardDialog(shell, wizard);
dialog.open();
}
// ----------------------------------------------------------
/**
* Gets an image descriptor for the specified image in the plug-in's
* "icons" directory.
*
* @param path the path to the icon that should be loaded, relative to
* the "icons" folder in the plug-in
* @return an ImageDescriptor for the image
*/
public static ImageDescriptor getImageDescriptor(String path)
{
try
{
URL base = Platform.getBundle(PLUGIN_ID).getEntry(
"/icons/"); //$NON-NLS-1$
URL url = new URL(base, path);
return ImageDescriptor.createFromURL(url);
}
catch(MalformedURLException e)
{
// Do nothing.
}
return null;
}
// ----------------------------------------------------------
/**
* Gets the most recently entered username in the submission wizard.
*
* @return the most recently entered username
*/
public String getLastEnteredUsername()
{
return lastEnteredUsername;
}
// ----------------------------------------------------------
/**
* Sets the most recently entered username in the submission wizard.
*
* @param username the most recently entered username
*/
public void setLastEnteredUsername(String username)
{
lastEnteredUsername = username;
}
// ----------------------------------------------------------
/**
* Gets the most recently entered password in the submission wizard.
*
* @return the most recently entered password
*/
public String getLastEnteredPassword()
{
return lastEnteredPassword;
}
// ----------------------------------------------------------
/**
* Sets the most recently entered password in the submission wizard.
*
* @param password the most recently entered password
*/
public void setLastEnteredPassword(String password)
{
lastEnteredPassword = password;
}
// ----------------------------------------------------------
/**
* Gets the most recently entered partner usernames in the submission
* wizard.
*
* @return the most recently entered partner usernames
*/
public String getLastEnteredPartners()
{
return lastEnteredPartners;
}
// ----------------------------------------------------------
/**
* Sets the most recently entered partner usernames in the submission
* wizard.
*
* @param partners the most recently entered partner usernames
*/
public void setLastEnteredPartners(String partners)
{
lastEnteredPartners = partners;
}
// ----------------------------------------------------------
/**
* Gets the path to the most recently selected assignment in the
* submission wizard.
*
* @return the path to the most recently selected assignment
*/
public String getLastSelectedAssignmentPath()
{
return lastSelectedAssignmentPath;
}
// ----------------------------------------------------------
/**
* Sets the path to the most recently selected assignment in the
* submission wizard.
*
* @param path the path to the most recently selected assignment
*/
public void setLastSelectedAssignmentPath(String path)
{
lastSelectedAssignmentPath = path;
}
//~ Static/instance variables .............................................
/**
* The unique identifier of the plug-in.
*/
public static final String PLUGIN_ID =
"net.sf.webcat.eclipse.submitter.ui"; //$NON-NLS-1$
/* The shared instance of the plug-in. */
private static SubmitterUIPlugin plugin;
/* The resource bundle of the plug-in. */
private ResourceBundle resourceBundle;
private String lastSelectedAssignmentPath;
private String lastEnteredUsername;
private String lastEnteredPassword;
private String lastEnteredPartners;
}