use of com.android.tools.idea.wizard.model.ModelWizard in project android by JetBrains.
the class AndroidNewModuleAction method actionPerformed.
@Override
public void actionPerformed(AnActionEvent e) {
Project project = e.getProject();
if (project != null) {
// TODO: before submitting this code, change this to only use the new wizard
if (Boolean.getBoolean("use.npw.modelwizard") && (e.getModifiers() & InputEvent.SHIFT_MASK) == 0) {
ArrayList<ModuleGalleryEntry> moduleDescriptions = new ArrayList<>();
for (ModuleDescriptionProvider provider : ModuleDescriptionProvider.EP_NAME.getExtensions()) {
moduleDescriptions.addAll(provider.getDescriptions());
}
ChooseModuleTypeStep chooseModuleTypeStep = new ChooseModuleTypeStep(new NewModuleModel(project), moduleDescriptions);
ModelWizard wizard = new ModelWizard.Builder().addStep(chooseModuleTypeStep).build();
new StudioWizardDialogBuilder(wizard, message("android.wizard.module.new.module.title")).build().show();
} else {
NewModuleWizardDynamic dialog = new NewModuleWizardDynamic(project, null);
dialog.init();
dialog.show();
}
}
}
use of com.android.tools.idea.wizard.model.ModelWizard in project android by JetBrains.
the class DeviceUiAction method showHardwareProfileWizard.
static void showHardwareProfileWizard(ConfigureDeviceModel model) {
ModelWizard wizard = new ModelWizard.Builder().addStep(new ConfigureDeviceOptionsStep(model)).build();
new StudioWizardDialogBuilder(wizard, "Hardware Profile Configuration").setProject(model.getProject()).build().show();
}
use of com.android.tools.idea.wizard.model.ModelWizard in project android by JetBrains.
the class TemplateManager method fillCategory.
private void fillCategory(NonEmptyActionGroup categoryGroup, final String category, ActionManager am) {
Map<String, File> categoryRow = myCategoryTable.row(category);
if (CATEGORY_ACTIVITY.equals(category)) {
AnAction galleryAction = new AnAction() {
@Override
public void update(AnActionEvent e) {
updateAction(e, "Gallery...", true);
}
@Override
public void actionPerformed(AnActionEvent e) {
// TODO: before submitting this code, change this to only use the new wizard
if (Boolean.getBoolean("use.npw.modelwizard") && (e.getModifiers() & InputEvent.SHIFT_MASK) == 0) {
DataContext dataContext = e.getDataContext();
Module module = LangDataKeys.MODULE.getData(dataContext);
assert module != null;
VirtualFile targetFile = CommonDataKeys.VIRTUAL_FILE.getData(dataContext);
assert targetFile != null;
VirtualFile targetDirectory = targetFile;
if (!targetDirectory.isDirectory()) {
targetDirectory = targetFile.getParent();
assert targetDirectory != null;
}
AndroidFacet facet = AndroidFacet.getInstance(module);
assert facet != null && facet.getAndroidModel() != null;
List<TemplateHandle> templateList = getTemplateList(FormFactor.MOBILE);
List<AndroidSourceSet> sourceSets = AndroidSourceSet.getSourceSets(facet, targetDirectory);
assert (sourceSets.size() > 0);
String initialPackageSuggestion = AndroidPackageUtils.getPackageForPath(facet, sourceSets, targetDirectory);
Project project = facet.getModule().getProject();
// TODO: Missing logic to select the default template
RenderTemplateModel renderModel = new RenderTemplateModel(project, templateList.get(0), initialPackageSuggestion, sourceSets.get(0), AndroidBundle.message("android.wizard.activity.add"));
NewModuleModel moduleModel = new NewModuleModel(project);
ChooseActivityTypeStep chooseActivityTypeStep = new ChooseActivityTypeStep(moduleModel, renderModel, facet, templateList, targetDirectory);
ModelWizard wizard = new ModelWizard.Builder().addStep(chooseActivityTypeStep).build();
new StudioWizardDialogBuilder(wizard, "New Android Activity").build().show();
} else {
DataContext dataContext = e.getDataContext();
final Module module = LangDataKeys.MODULE.getData(dataContext);
VirtualFile targetFile = CommonDataKeys.VIRTUAL_FILE.getData(dataContext);
NewAndroidActivityWizard wizard = new NewAndroidActivityWizard(module, targetFile, null);
wizard.init();
wizard.show();
}
}
};
categoryGroup.add(galleryAction);
categoryGroup.addSeparator();
setPresentation(category, galleryAction);
}
for (String templateName : categoryRow.keySet()) {
if (EXCLUDED_TEMPLATES.contains(templateName)) {
continue;
}
TemplateMetadata metadata = getTemplateMetadata(myCategoryTable.get(category, templateName));
NewAndroidComponentAction templateAction = new NewAndroidComponentAction(category, templateName, metadata);
String actionId = ACTION_ID_PREFIX + category + templateName;
am.unregisterAction(actionId);
am.registerAction(actionId, templateAction);
categoryGroup.add(templateAction);
}
}
use of com.android.tools.idea.wizard.model.ModelWizard in project android by JetBrains.
the class SdkQuickfixUtils method createDialog.
@VisibleForTesting
@Nullable
static ModelWizardDialog createDialog(@Nullable Project project, @Nullable Component parent, @Nullable Collection<String> requestedPaths, @Nullable Collection<UpdatablePackage> requestedPackages, @Nullable Collection<LocalPackage> requestedUninstalls, @Nullable AndroidSdkHandler sdkHandler, boolean backgroundable) {
if (sdkHandler == null) {
return null;
}
RepoManager mgr = sdkHandler.getSdkManager(REPO_LOGGER);
if (mgr.getLocalPath() == null) {
String title = "SDK Problem";
String msg = "<html>" + "Your Android SDK is missing or out of date." + "<br>" + "You can configure your SDK via <b>Configure | Project Defaults | Project Structure | SDKs</b></html>";
Messages.showErrorDialog(msg, title);
return null;
}
List<String> unknownPaths = new ArrayList<>();
List<UpdatablePackage> resolvedPackages;
mgr.loadSynchronously(0, new StudioLoggerProgressIndicator(SdkQuickfixUtils.class), new StudioDownloader(), StudioSettingsController.getInstance());
RepositoryPackages packages = mgr.getPackages();
if (requestedPackages == null) {
requestedPackages = new ArrayList<>();
}
requestedPackages.addAll(lookupPaths(requestedPaths, packages, unknownPaths));
try {
resolvedPackages = resolve(requestedPackages, packages);
} catch (PackageResolutionException e) {
Messages.showErrorDialog(e.getMessage(), "Error Resolving Packages");
return null;
}
Set<LocalPackage> resolvedUninstalls = new HashSet<>();
if (requestedUninstalls != null) {
resolvedUninstalls.addAll(requestedUninstalls);
// We don't want to uninstall something required by a package we're installing
resolvedPackages.forEach(updatable -> resolvedUninstalls.remove(updatable.getLocal()));
}
List<UpdatablePackage> unavailableDownloads = Lists.newArrayList();
verifyAvailability(resolvedPackages, unavailableDownloads);
// If there were requests we didn't understand or can't download, show an error.
if (!unknownPaths.isEmpty() || !unavailableDownloads.isEmpty()) {
String title = "Packages Unavailable";
HtmlBuilder builder = new HtmlBuilder();
builder.openHtmlBody().add(String.format("%1$s packages are not available for download!", resolvedPackages.isEmpty() ? "All" : "Some")).newline().newline().add("The following packages are not available:").beginList();
for (UpdatablePackage p : unavailableDownloads) {
builder.listItem().add(p.getRepresentative().getDisplayName());
}
for (String p : unknownPaths) {
builder.listItem().add("Package id " + p);
}
builder.endList().closeHtmlBody();
Messages.showErrorDialog(builder.getHtml(), title);
}
// If everything was removed, don't continue.
if (resolvedPackages.isEmpty() && resolvedUninstalls.isEmpty()) {
return null;
}
List<RemotePackage> installRequests = resolvedPackages.stream().map(UpdatablePackage::getRemote).collect(Collectors.toList());
ModelWizard.Builder wizardBuilder = new ModelWizard.Builder();
wizardBuilder.addStep(new LicenseAgreementStep(new LicenseAgreementModel(mgr.getLocalPath()), installRequests));
InstallSelectedPackagesStep installStep = new InstallSelectedPackagesStep(resolvedPackages, resolvedUninstalls, sdkHandler, backgroundable);
wizardBuilder.addStep(installStep);
ModelWizard wizard = wizardBuilder.build();
String title = "SDK Quickfix Installation";
return new StudioWizardDialogBuilder(wizard, title, parent).setProject(project).setModalityType(DialogWrapper.IdeModalityType.IDE).setCancellationPolicy(ModelWizardDialog.CancellationPolicy.CAN_CANCEL_UNTIL_CAN_FINISH).build();
}
use of com.android.tools.idea.wizard.model.ModelWizard in project android by JetBrains.
the class IdeaWizardAdapterTest method updatesButtonsOnInput.
@Test
public void updatesButtonsOnInput() throws Exception {
DummyHost host = new DummyHost("None", null);
DummyStep step = new DummyStep(new DummyModel(), "");
ModelWizard guest = new ModelWizard.Builder(step).build();
IdeaWizardAdapter adaptor = new IdeaWizardAdapter(host, guest);
ourInvokeStrategy.updateAllSteps();
assertThat(host.updateButtonsCalled).isTrue();
assertThat(host.canGoNextValue).isTrue();
assertThat(host.firstStepValue).isTrue();
assertThat(host.lastStepValue).isTrue();
host.Reset();
step.goForwardValue.set(false);
ourInvokeStrategy.updateAllSteps();
assertThat(host.updateButtonsCalled).isTrue();
assertThat(host.canGoNextValue).isFalse();
assertThat(host.firstStepValue).isTrue();
assertThat(host.lastStepValue).isTrue();
host.Reset();
step.goForwardValue.set(true);
ourInvokeStrategy.updateAllSteps();
assertThat(host.updateButtonsCalled).isTrue();
assertThat(host.canGoNextValue).isTrue();
assertThat(host.firstStepValue).isTrue();
assertThat(host.lastStepValue).isTrue();
Disposer.dispose(adaptor);
}
Aggregations