blob: b91a5b1be85f031b699f2f8d41fadef9e17e5ed7 [file] [log] [blame]
/*
* 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 org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.wizard.IWizardContainer;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.wizards.IWizardDescriptor;
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.AndroidUtils;
import com.motorola.studio.android.model.Activity;
/**
* Class that implements the Activity Wizard Main Page
*/
public class NewActivityMainPage extends NewLauncherWizardPage
{
@Override
public boolean canFlipToNextPage()
{
return false;
}
private static final String NEW_ACTIVITY_HELP = CodeUtilsActivator.PLUGIN_ID + ".newactivity";
/**
* Default constructor
*
* @param activity The activity model
*/
public NewActivityMainPage(Activity activity)
{
super(activity, CodeUtilsNLS.UI_NewActivityMainPage_PageTitle);
}
/*
* (non-Javadoc)
* @see com.motorola.studio.android.wizards.buildingblocks.NewBuildingBlocksWizard#getBuildBlock()
*/
@Override
public Activity getBuildBlock()
{
return (Activity) super.getBuildBlock();
}
/* (non-Javadoc)
* @see com.motorola.studio.android.wizards.buildingblocks.NewBuildingBlocksWizardPage#getMethods()
*/
@Override
protected Method[] getMethods()
{
Method onCreateMethod = new Method(getBuildBlock().getOnStartMessage())
{
@Override
public void handle(boolean selection)
{
getBuildBlock().setOnStart(selection);
}
};
return new Method[]
{
onCreateMethod
};
}
/* (non-Javadoc)
* @see com.motorola.studio.android.wizards.buildingblocks.NewBuildingBlocksWizardPage#createIntermediateControls(org.eclipse.swt.widgets.Composite)
*/
@Override
protected void createIntermediateControls(Composite parent)
{
createIntentFilterControls(parent);
createMainActivityControl(parent, 4);
createSeparator(parent, 4);
}
/**
* add samples control.
*
* @param composite
* The wizard page composite
*/
@Override
protected void createSampleControls(Composite composite, int nColumns)
{
GridData data = null;
Composite linkCompositecomposite = new Composite(composite, SWT.FILL);
linkCompositecomposite.setFont(composite.getFont());
GridLayout layout = new GridLayout(nColumns, false);
linkCompositecomposite.setLayout(layout);
data = new GridData(SWT.FILL, SWT.FILL, true, true, nColumns, 2);
linkCompositecomposite.setLayoutData(data);
Image image = null;
try
{
ImageDescriptor imageDesc =
ImageDescriptor.createFromURL(CodeUtilsActivator.getDefault().getBundle()
.getEntry("icons/obj16/new_activity_template_wiz.png")); //$NON-NLS-1$
image = imageDesc.createImage();
}
catch (Exception ex)
{
// do nothing;
}
CLabel imgLabelLeft = new CLabel(linkCompositecomposite, SWT.CENTER);
data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
imgLabelLeft.setLayoutData(data);
imgLabelLeft.setImage(image);
final Link templateLink = new Link(linkCompositecomposite, SWT.NONE);
data = new GridData(SWT.LEFT, SWT.CENTER, true, true);
templateLink.setLayoutData(data);
templateLink.setText("<a>" + CodeUtilsNLS.UI_CreateNewActivityBasedOnTemplateLink //$NON-NLS-1$
+ "</a>"); //$NON-NLS-1$
templateLink.addSelectionListener(new SelectionAdapter()
{
/* (non-Javadoc)
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(SelectionEvent event)
{
NewActivityWizard newActivityWizard = (NewActivityWizard) getWizard();
IWizardContainer container = newActivityWizard.getContainer();
container.getShell().setVisible(false);
if (container instanceof WizardDialog)
{
IWizardDescriptor descriptor =
PlatformUI
.getWorkbench()
.getNewWizardRegistry()
.findWizard(
"com.motorola.studio.android.wizards.newActivityBasedOnTemplateWizard");
if (descriptor != null)
{
NewActivityBasedOnTemplateWizard wizard = null;
try
{
wizard = (NewActivityBasedOnTemplateWizard) descriptor.createWizard();
NewActivityWizard activityWizard = (NewActivityWizard) getWizard();
wizard.init(PlatformUI.getWorkbench(), activityWizard.getSelection());
WizardDialog nextWd = new WizardDialog(getShell(), wizard);
nextWd.setTitle(wizard.getWindowTitle());
nextWd.open();
}
catch (CoreException e)
{
StudioLogger
.error(NewActivityMainPage.class,
"could not open new activity based on template wizard from inside new activity wizard");
}
}
WizardDialog nextWd = (WizardDialog) container;
nextWd.close();
}
}
});
templateLink.setEnabled(true);
}
private void createMainActivityControl(Composite parent, int nColumns)
{
// Create a checkbox to allow the user to set the created activity as the MAIN activity
Button checkButtonMainActivity = new Button(parent, SWT.CHECK | SWT.LEFT);
GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false, nColumns, 1);
checkButtonMainActivity.setLayoutData(gridData);
checkButtonMainActivity.setText(CodeUtilsNLS.UI_NewActivityMainPage_CheckMainButton);
checkButtonMainActivity.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
if (e.widget instanceof Button)
{
// Set Activity flag accordingly
getBuildBlock().setMainActivity(((Button) e.widget).getSelection());
}
}
});
}
/* (non-Javadoc)
* @see com.motorola.studio.android.wizards.buildingblocks.NewBuildingBlocksWizardPage#getDefaultMessage()
*/
@Override
public String getDefaultMessage()
{
return CodeUtilsNLS.UI_NewActivityMainPage_DescriptionCreateActivity;
}
/* (non-Javadoc)
* @see com.motorola.studio.android.wizards.buildingblocks.NewBuildingBlocksWizardPage#getWizardTitle()
*/
@Override
public String getWizardTitle()
{
return CodeUtilsNLS.UI_NewActivityMainPage_TitleActivity;
}
/* (non-Javadoc)
* @see com.motorola.studio.android.wizards.buildingblocks.NewLauncherWizardPage#getIntentFiltersActions()
*/
@Override
protected String[] getIntentFiltersActions()
{
String[] intentFiltersActions = new String[0];
try
{
intentFiltersActions = AndroidUtils.getActivityActions(getBuildBlock().getProject());
}
catch (AndroidException e)
{
setErrorMessage(e.getMessage());
}
return intentFiltersActions;
}
/**
* Gets the help ID to be used for attaching
* context sensitive help.
*
* Classes that extends this class and want to set
* their on help should override this method
*/
@Override
protected String getHelpId()
{
return NEW_ACTIVITY_HELP;
}
}