Skip to content

Removal of the FlutterModuleType, issue #748. #1213

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 17, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -365,9 +365,9 @@
<liveTemplateContext implementation="io.flutter.template.DartToplevelTemplateContextType"/>

<!-- IDEA only -->
<moduleType id="FLUTTER_MODULE_TYPE" implementationClass="io.flutter.module.FlutterModuleType"/>
<moduleBuilder builderClass="io.flutter.module.FlutterModuleBuilder"/>

<!-- Small IDE support -->
<!-- Small IDE support (ex: WebStorm) -->
<directoryProjectGenerator implementation="io.flutter.module.FlutterSmallIDEProjectGenerator"/>

<projectService serviceImplementation="io.flutter.sdk.FlutterSdkManager"/>
Expand Down Expand Up @@ -397,7 +397,6 @@

<editorNotificationProvider implementation="io.flutter.editor.FlutterPubspecNotificationProvider"/>
<editorNotificationProvider implementation="io.flutter.inspections.SdkConfigurationNotificationProvider"/>
<editorNotificationProvider implementation="io.flutter.inspections.WrongModuleTypeNotificationProvider"/>

<projectService serviceInterface="io.flutter.run.FlutterReloadManager"
serviceImplementation="io.flutter.run.FlutterReloadManager"
Expand Down
11 changes: 3 additions & 8 deletions src/io/flutter/FlutterBundle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,8 @@ app.release.action.text=Run in Flutter release mode
app.release.config.action.text=Flutter Run ''{0}'' (Release)
app.release.action.description=Run Flutter app in release mode

change.module.type.to.flutter.and.reload.project=Change module type to Flutter

dart.plugin.update.action.label=Update Dart
dart.sdk.is.not.configured=Dart SDK is not configured
don.t.show.again.for.this.module=Don't show again

error.folder.specified.as.sdk.not.exists=The folder specified as the Flutter SDK home does not exist.
error.flutter.sdk.without.dart.sdk=The Flutter SDK installation is incomplete; please see: https://flutter.io/setup.
Expand All @@ -34,7 +31,6 @@ flutter.project.description=Build high-performance, high-fidelity, mobile apps f
flutter.sdk.browse.path.label=Select Flutter SDK Path
flutter.sdk.is.not.configured=The Flutter SDK is not configured
flutter.sdk.path.label=Flutter &SDK path:
flutter.support.is.not.enabled.for.module.0=Flutter support is not enabled for module ''{0}''
flutter.title=Flutter
flutter.sdk.notAvailable.title=No Flutter SDK Configured
flutter.sdk.notAvailable.message=This action requires a Flutter SDK to be configured; configure one now?
Expand All @@ -49,15 +45,11 @@ get.dependencies=Get dependencies
upgrade.dependencies=Upgrade dependencies
ignore.warning=Ignore

reload.project=Reload project
runner.flutter.configuration.description=Flutter run configuration
runner.flutter.configuration.name=Flutter
runner.flutter.bazel.configuration.description=Flutter Bazel run configuration
runner.flutter.bazel.configuration.name=Flutter (Bazel)

update.module.type=Update Module Type
updating.module.type.requires.project.reload.proceed=Updating module type requires project reload. Proceed?

waiting.for.flutter=Waiting for debug connection...

entrypoint.not.set=Dart Entrypoint hasn't been set
Expand All @@ -78,6 +70,9 @@ flutter.analytics.notification.accept=Sounds good!
flutter.analytics.notification.decline=No thanks
flutter.analytics.privacyUrl=http://www.google.com/policies/privacy/

flutter.initializer.module.converted.title=Module Type Upgraded
flutter.initializer.module.converted.content=Project converted from FLUTTER_MODULE_TYPE

flutter.reload.firstRun.title=Flutter supports hot reload!
flutter.reload.firstRun.content=Apply changes to your app in place, instantly.
flutter.reload.firstRun.url=https://flutter.io/getting-started/#quickly-viewing-source-code-changes-with-hot-reload
Expand Down
7 changes: 7 additions & 0 deletions src/io/flutter/FlutterInitializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,13 @@ public static void setVerboseLogging(boolean value) {

@Override
public void runActivity(@NotNull Project project) {
// Convert all modules of deprecated type FlutterModuleType.
if (FlutterModuleUtils.convertFromDeprecatedModuleType(project)) {
// If any modules were converted over, create a notification
FlutterMessages.showInfo(FlutterBundle.message("flutter.initializer.module.converted.title"),
FlutterBundle.message("flutter.initializer.module.converted.content"));
}

// Start watching for devices.
DeviceService.getInstance(project);

Expand Down
5 changes: 3 additions & 2 deletions src/io/flutter/actions/FlutterSdkAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import io.flutter.bazel.WorkspaceCache;
import io.flutter.pub.PubRoot;
import io.flutter.sdk.FlutterSdk;
import io.flutter.utils.FlutterModuleUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand All @@ -34,8 +35,8 @@ public void actionPerformed(AnActionEvent event) {

if (enableActionInBazelContext()) {
// See if the Bazel workspace exists for this project.
final Workspace workspace = project != null ? WorkspaceCache.getInstance(project).getNow() : null;
if (workspace != null && workspace.usesFlutter(project)) {
final Workspace workspace = FlutterModuleUtils.getFlutterBazelWorkspace(project);
if (workspace != null) {
FlutterInitializer.sendAnalyticsAction(this);
FileDocumentManager.getInstance().saveAllDocuments();
startCommandInBazelContext(project, workspace);
Expand Down
10 changes: 0 additions & 10 deletions src/io/flutter/bazel/Workspace.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,6 @@ private Workspace(@NotNull VirtualFile root,
this.doctorScript = doctorScript;
}

/**
* Returns true for a project that uses Flutter code within this workspace.
*/
public boolean usesFlutter(@NotNull final Project project) {
for (Module module : ModuleManager.getInstance(project).getModules()) {
if (usesFlutter(module)) return true;
}
return false;
}

/**
* Returns true for a module that uses flutter code within this workspace.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ public EditorNotificationPanel createNotificationPanel(@NotNull VirtualFile file
}

// The Bazel workspace condition is handled by this check, pubspecs are not used.
// TODO(jwren) Add additional check to exit if this is a Flutter Bazel workspace (in the event that some pubspec.yaml file is opened).
// If for some reason a pubspec is opened, the next condition, isFlutterModule, will return false,
// there is no reason to call FlutterModuleUtils.isFlutterBazelProject().
if (!PubRoot.isPubspec(file)) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,7 @@ public Key<EditorNotificationPanel> getKey() {
public EditorNotificationPanel createNotificationPanel(@NotNull final VirtualFile file, @NotNull final FileEditor fileEditor) {

// If this is a Bazel configured Flutter project, exit immediately, neither of the notifications should be shown for this project type.
final Workspace workspace = WorkspaceCache.getInstance(project).getNow();
if (workspace != null && workspace.usesFlutter(project)) {
return null;
}
if (FlutterModuleUtils.isFlutterBazelProject(project)) return null;

if (file.getFileType() != DartFileType.INSTANCE) return null;

Expand Down

This file was deleted.

19 changes: 17 additions & 2 deletions src/io/flutter/module/FlutterModuleBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import icons.FlutterIcons;
Expand All @@ -42,7 +43,7 @@
public class FlutterModuleBuilder extends ModuleBuilder {
private static final Logger LOG = Logger.getInstance(FlutterModuleBuilder.class);

private static final String DART_GROUP_NAME = "Static Web";
private static final String DART_GROUP_NAME = "Static Web"; // == WebModuleBuilder.GROUP_NAME

private FlutterModuleWizardStep myStep;

Expand All @@ -56,6 +57,11 @@ public String getPresentableName() {
return FlutterBundle.message("flutter.module.name");
}

@Override
public String getDescription() {
return FlutterBundle.message("flutter.project.description");
}

// This method does not exist in 2017.2.
@SuppressWarnings("override")
public Icon getBigIcon() {
Expand Down Expand Up @@ -211,8 +217,17 @@ public String getParentGroup() {
}

@Override
@NotNull
public String getBuilderId() {
// The builder id is used to distinguish between different builders with the same module type, see
// com.intellij.ide.projectWizard.ProjectTypeStep for an example.
return StringUtil.notNullize(super.getBuilderId()) + "_" + FlutterModuleBuilder.class.getCanonicalName();
}

@Override
@NotNull
public ModuleType getModuleType() {
return FlutterModuleType.getInstance();
return FlutterModuleUtils.getModuleTypeForFlutter();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,16 @@
import com.intellij.openapi.roots.ui.configuration.CommonContentEntriesEditor;
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationEditorProvider;
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationState;
import io.flutter.utils.FlutterModuleUtils;

public class FlutterModuleConfigurationEditorProvider implements ModuleConfigurationEditorProvider {
@Override
public ModuleConfigurationEditor[] createEditors(ModuleConfigurationState state) {
final Module module = state.getRootModel().getModule();

if (ModuleType.get(module) != FlutterModuleType.getInstance()) {
if (ModuleType.get(module) != FlutterModuleUtils.getModuleTypeForFlutter()) {
return ModuleConfigurationEditor.EMPTY;
}
else {
return new ModuleConfigurationEditor[]{new CommonContentEntriesEditor(module.getName(), state)};
}
return new ModuleConfigurationEditor[]{new CommonContentEntriesEditor(module.getName(), state)};
}
}
55 changes: 0 additions & 55 deletions src/io/flutter/module/FlutterModuleType.java

This file was deleted.

10 changes: 5 additions & 5 deletions src/io/flutter/project/FlutterIconProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,15 @@

import com.intellij.icons.AllIcons;
import com.intellij.ide.IconProvider;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.util.Iconable;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.jetbrains.lang.dart.DartFileType;
import com.jetbrains.lang.dart.psi.DartFile;
import io.flutter.FlutterUtils;
import io.flutter.module.FlutterModuleType;
import io.flutter.pub.PubRoot;
import io.flutter.utils.FlutterModuleUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand All @@ -30,8 +29,9 @@ public class FlutterIconProvider extends IconProvider {

@Nullable
public Icon getIcon(@NotNull final PsiElement element, @Iconable.IconFlags final int flags) {
final boolean hasFlutterModule = FlutterModuleUtils.hasFlutterModule(element.getProject());
// Directories.
if (element instanceof PsiDirectory && ModuleUtil.hasModulesOfType(element.getProject(), FlutterModuleType.getInstance())) {
if (hasFlutterModule && element instanceof PsiDirectory) {
final VirtualFile file = ((PsiDirectory)element).getVirtualFile();
if (!file.isInLocalFileSystem()) return null;

Expand All @@ -43,8 +43,8 @@ public Icon getIcon(@NotNull final PsiElement element, @Iconable.IconFlags final
}

// Files.
if (element instanceof DartFile && ModuleUtil.hasModulesOfType(element.getProject(), FlutterModuleType.getInstance())) {
DartFile dartFile = (DartFile)element;
if (hasFlutterModule && element instanceof DartFile) {
final DartFile dartFile = (DartFile)element;
final VirtualFile file = dartFile.getVirtualFile();
if (!file.isInLocalFileSystem()) return null;

Expand Down
6 changes: 1 addition & 5 deletions src/io/flutter/run/daemon/DeviceDaemon.java
Original file line number Diff line number Diff line change
Expand Up @@ -148,11 +148,7 @@ static Command chooseCommand(@NotNull final Project project) {
}

private static boolean usesFlutter(@NotNull final Project project) {
final Workspace workspace = WorkspaceCache.getInstance(project).getNow();
if (workspace != null) {
return workspace.usesFlutter(project);
}
return FlutterModuleUtils.hasFlutterModule(project);
return FlutterModuleUtils.isFlutterBazelProject(project) || FlutterModuleUtils.hasFlutterModule(project);
}

/**
Expand Down
Loading