summaryrefslogtreecommitdiff
path: root/src/plugins/android.codeutils/src/com/motorola/studio/android/wizards/buildingblocks/NewActivityWizard.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android.codeutils/src/com/motorola/studio/android/wizards/buildingblocks/NewActivityWizard.java')
-rw-r--r--src/plugins/android.codeutils/src/com/motorola/studio/android/wizards/buildingblocks/NewActivityWizard.java235
1 files changed, 235 insertions, 0 deletions
diff --git a/src/plugins/android.codeutils/src/com/motorola/studio/android/wizards/buildingblocks/NewActivityWizard.java b/src/plugins/android.codeutils/src/com/motorola/studio/android/wizards/buildingblocks/NewActivityWizard.java
new file mode 100644
index 0000000..0d57fb0
--- /dev/null
+++ b/src/plugins/android.codeutils/src/com/motorola/studio/android/wizards/buildingblocks/NewActivityWizard.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.motorola.studio.android.wizards.buildingblocks;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.ui.JavaUI;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PartInitException;
+
+import com.motorola.studio.android.codeutils.CodeUtilsActivator;
+import com.motorola.studio.android.codeutils.i18n.CodeUtilsNLS;
+import com.motorola.studio.android.common.exception.AndroidException;
+import com.motorola.studio.android.common.log.StudioLogger;
+import com.motorola.studio.android.common.utilities.EclipseUtils;
+import com.motorola.studio.android.model.Activity;
+import com.motorola.studio.android.model.BuildingBlockModel;
+
+/**
+ * Class that implements the Activity Wizard.
+ */
+public class NewActivityWizard extends NewBuildingBlocksWizard
+{
+ private static final String WIZBAN_ICON = "icons/wizban/new_activity_wiz.png"; //$NON-NLS-1$
+
+ private final Activity activity = new Activity();
+
+ private IStructuredSelection selection = null;
+
+ private IWorkbench workbench = null;
+
+ /**
+ * IRunnableWithProgress object to create the activity.
+ */
+ private class DoSave implements IRunnableWithProgress
+ {
+ AndroidException exception = null;
+
+ boolean saved = false;
+
+ public void run(IProgressMonitor monitor) throws InvocationTargetException,
+ InterruptedException
+ {
+ try
+ {
+ saved = getBuildingBlock().save(getContainer(), monitor);
+ getBuildingBlock().getProject().refreshLocal(IResource.DEPTH_INFINITE, monitor);
+ getBuildingBlock().getProject().build(IncrementalProjectBuilder.INCREMENTAL_BUILD,
+ monitor);
+ }
+ catch (CoreException ce)
+ {
+ //build failed - show a warning message
+ StudioLogger.error(this.getClass(), ce.getMessage(), ce);
+ EclipseUtils
+ .showWarningDialog(
+ CodeUtilsNLS.UI_NewActivityWizard_TitleNewActivityWizard,
+ CodeUtilsNLS.NewActivityWizard_MessageSomeProblemsOccurredWhileBuildingProject);
+ }
+ catch (AndroidException e)
+ {
+ exception = e;
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#canFinish()
+ */
+ @Override
+ public boolean canFinish()
+ {
+ return !activity.needMoreInformation();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish()
+ {
+ boolean saved = false;
+
+ try
+ {
+ DoSave doSave = new DoSave();
+
+ getContainer().run(false, false, doSave);
+
+ if (doSave.exception != null)
+ {
+ throw doSave.exception;
+ }
+ else
+ {
+ saved = doSave.saved;
+ }
+ }
+ catch (AndroidException e)
+ {
+ IStatus status =
+ new Status(IStatus.ERROR, CodeUtilsActivator.PLUGIN_ID, e.getLocalizedMessage());
+ EclipseUtils.showErrorDialog(CodeUtilsNLS.UI_GenericErrorDialogTitle,
+ CodeUtilsNLS.ERR_BuildingBlockCreation_ErrorMessage, status);
+ }
+ catch (InvocationTargetException e)
+ {
+ IStatus status =
+ new Status(IStatus.ERROR, CodeUtilsActivator.PLUGIN_ID, e.getLocalizedMessage());
+ EclipseUtils.showErrorDialog(CodeUtilsNLS.UI_GenericErrorDialogTitle,
+ CodeUtilsNLS.ERR_BuildingBlockCreation_ErrorMessage, status);
+ }
+ catch (InterruptedException e)
+ {
+ IStatus status =
+ new Status(IStatus.ERROR, CodeUtilsActivator.PLUGIN_ID, e.getLocalizedMessage());
+ EclipseUtils.showErrorDialog(CodeUtilsNLS.UI_GenericErrorDialogTitle,
+ CodeUtilsNLS.ERR_BuildingBlockCreation_ErrorMessage, status);
+ }
+
+ if (saved)
+ {
+ ICompilationUnit javaFile =
+ getBuildingBlock().getPackageFragment().getCompilationUnit(
+ getBuildingBlock().getName() + ".java"); //$NON-NLS-1$
+
+ if ((javaFile != null) && javaFile.exists())
+ {
+ try
+ {
+ JavaUI.openInEditor(javaFile);
+ }
+ catch (PartInitException e)
+ {
+ // Do nothing
+ StudioLogger.error(NewActivityWizard.class, "Could not open the activity " //$NON-NLS-1$
+ + getBuildingBlock().getName() + " on an editor.", e); //$NON-NLS-1$
+ }
+ catch (JavaModelException e)
+ {
+ // Do nothing
+ StudioLogger.error(NewActivityWizard.class, "Could not open the activity " //$NON-NLS-1$
+ + getBuildingBlock().getName() + " on an editor.", e); //$NON-NLS-1$
+ }
+ }
+ }
+
+ if (saved)
+ {
+ // Collecting usage data for statistical purposes
+ try
+ {
+ StudioLogger.collectUsageData(StudioLogger.WHAT_BUILDINGBLOCK_ACTIVITY,
+ StudioLogger.KIND_BUILDINGBLOCK, StudioLogger.DESCRIPTION_DEFAULT,
+ CodeUtilsActivator.PLUGIN_ID, CodeUtilsActivator.getDefault().getBundle()
+ .getVersion().toString());
+ }
+ catch (Throwable e)
+ {
+ //Do nothing, but error on the log should never prevent app from working
+ }
+ }
+ return saved;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection)
+ {
+ this.selection = selection;
+ this.workbench = workbench;
+ setWindowTitle(CodeUtilsNLS.UI_NewActivityWizard_TitleNewActivityWizard);
+ setNeedsProgressMonitor(true);
+ setDefaultPageImageDescriptor(CodeUtilsActivator.getImageDescriptor(WIZBAN_ICON));
+ activity.configure(selection);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#addPages()
+ */
+ @Override
+ public void addPages()
+ {
+ addPage(new NewActivityMainPage(activity));
+ }
+
+ /* (non-Javadoc)
+ * @see com.motorola.studio.android.wizards.buildingblocks.NewBuildingBlocksWizard#getBuildingBlock()
+ */
+ @Override
+ protected BuildingBlockModel getBuildingBlock()
+ {
+ return activity;
+ }
+
+ /**
+ * @return the selection
+ */
+ protected IStructuredSelection getSelection()
+ {
+ return selection;
+ }
+
+ /**
+ * @return the workbench
+ */
+ protected IWorkbench getWorkbench()
+ {
+ return workbench;
+ }
+}