| /* |
| * 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; |
| } |
| } |