mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Google App Engine: 'Upload' action now creates deployment run configuration to simplify migration (IDEA-111971), obsolete deployment code removed
This commit is contained in:
+41
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* 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.intellij.remoteServer.configuration.deployment;
|
||||
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.remoteServer.ServerType;
|
||||
import com.intellij.remoteServer.configuration.RemoteServer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public abstract class DeploymentConfigurationManager {
|
||||
@NotNull
|
||||
public static DeploymentConfigurationManager getInstance(@NotNull Project project) {
|
||||
return ServiceManager.getService(project, DeploymentConfigurationManager.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public abstract List<RunnerAndConfigurationSettings> getDeploymentConfigurations(@NotNull ServerType<?> serverType);
|
||||
|
||||
public abstract void createAndRunConfiguration(@NotNull ServerType<?> serverType, @Nullable RemoteServer<?> remoteServer);
|
||||
}
|
||||
@@ -21,6 +21,8 @@
|
||||
<programRunner implementation="com.intellij.remoteServer.impl.runtime.DeployToServerRunner"/>
|
||||
<projectService serviceInterface="com.intellij.remoteServer.runtime.ui.RemoteServersView"
|
||||
serviceImplementation="com.intellij.remoteServer.impl.runtime.ui.RemoteServersViewImpl"/>
|
||||
<projectService serviceInterface="com.intellij.remoteServer.configuration.deployment.DeploymentConfigurationManager"
|
||||
serviceImplementation="com.intellij.remoteServer.impl.configuration.deployment.DeploymentConfigurationManagerImpl"/>
|
||||
<remoteServer.deploymentSource.type implementation="com.intellij.remoteServer.impl.configuration.deployment.ModuleDeploymentSourceType"/>
|
||||
</extensions>
|
||||
<application-components>
|
||||
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* 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.intellij.remoteServer.impl.configuration.deployment;
|
||||
|
||||
import com.intellij.execution.ProgramRunnerUtil;
|
||||
import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.RunManagerEx;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
import com.intellij.execution.impl.RunDialog;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.remoteServer.ServerType;
|
||||
import com.intellij.remoteServer.configuration.RemoteServer;
|
||||
import com.intellij.remoteServer.configuration.deployment.DeploymentConfigurationManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class DeploymentConfigurationManagerImpl extends DeploymentConfigurationManager {
|
||||
private final Project myProject;
|
||||
|
||||
public DeploymentConfigurationManagerImpl(Project project) {
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<RunnerAndConfigurationSettings> getDeploymentConfigurations(@NotNull ServerType<?> serverType) {
|
||||
final DeployToServerConfigurationType configurationType = DeployToServerConfigurationTypesRegistrar.getDeployConfigurationType(serverType);
|
||||
return RunManager.getInstance(myProject).getConfigurationSettingsList(configurationType);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void createAndRunConfiguration(@NotNull ServerType<?> serverType, @Nullable RemoteServer<?> remoteServer) {
|
||||
DeployToServerConfigurationType configurationType = DeployToServerConfigurationTypesRegistrar.getDeployConfigurationType(serverType);
|
||||
RunManagerEx runManager = RunManagerEx.getInstanceEx(myProject);
|
||||
ConfigurationFactoryEx factory = configurationType.getFactory();
|
||||
RunnerAndConfigurationSettings settings = runManager.createRunConfiguration(configurationType.getDisplayName(), factory);
|
||||
DeployToServerRunConfiguration<?, ?> runConfiguration = (DeployToServerRunConfiguration<?, ?>)settings.getConfiguration();
|
||||
if (remoteServer != null) {
|
||||
runConfiguration.setServerName(remoteServer.getName());
|
||||
}
|
||||
if (RunDialog.editConfiguration(myProject, settings, "Create Deployment Configuration",
|
||||
DefaultRunExecutor.getRunExecutorInstance())) {
|
||||
runManager.addConfiguration(settings, runManager.isConfigurationShared(settings), runManager.getBeforeRunTasks(runConfiguration),
|
||||
false);
|
||||
runManager.setSelectedConfiguration(settings);
|
||||
ProgramRunnerUtil.executeConfiguration(myProject, settings, DefaultRunExecutor.getRunExecutorInstance());
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-23
@@ -1,7 +1,8 @@
|
||||
package com.intellij.remoteServer.impl.runtime.ui.tree;
|
||||
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.ProgramRunnerUtil;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
import com.intellij.execution.impl.RunDialog;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
@@ -17,16 +18,13 @@ import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.ui.popup.ListPopup;
|
||||
import com.intellij.openapi.ui.popup.PopupStep;
|
||||
import com.intellij.openapi.ui.popup.util.BaseListPopupStep;
|
||||
import com.intellij.openapi.util.EmptyRunnable;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.remoteServer.ServerType;
|
||||
import com.intellij.remoteServer.configuration.RemoteServer;
|
||||
import com.intellij.remoteServer.configuration.RemoteServersManager;
|
||||
import com.intellij.remoteServer.configuration.ServerConfiguration;
|
||||
import com.intellij.remoteServer.configuration.deployment.DeploymentConfigurationManager;
|
||||
import com.intellij.remoteServer.impl.configuration.RemoteServerConfigurable;
|
||||
import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerConfigurationType;
|
||||
import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerConfigurationTypesRegistrar;
|
||||
import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerRunConfiguration;
|
||||
import com.intellij.remoteServer.impl.runtime.deployment.DeploymentTaskImpl;
|
||||
import com.intellij.remoteServer.impl.runtime.log.DeploymentLogManagerImpl;
|
||||
import com.intellij.remoteServer.impl.runtime.log.LoggingHandlerImpl;
|
||||
@@ -176,8 +174,8 @@ public class ServersTreeStructure extends AbstractTreeStructureBase {
|
||||
@Override
|
||||
public void deploy(AnActionEvent e) {
|
||||
final ServerType<? extends ServerConfiguration> serverType = getValue().getType();
|
||||
final DeployToServerConfigurationType configurationType = DeployToServerConfigurationTypesRegistrar.getDeployConfigurationType(serverType);
|
||||
List<RunnerAndConfigurationSettings> list = new ArrayList<RunnerAndConfigurationSettings>(RunManager.getInstance(doGetProject()).getConfigurationSettingsList(configurationType));
|
||||
final DeploymentConfigurationManager configurationManager = DeploymentConfigurationManager.getInstance(doGetProject());
|
||||
List<RunnerAndConfigurationSettings> list = new ArrayList<RunnerAndConfigurationSettings>(configurationManager.getDeploymentConfigurations(serverType));
|
||||
list.add(null);
|
||||
ListPopup popup = JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep<RunnerAndConfigurationSettings>("Deploy Configuration", list) {
|
||||
@Override
|
||||
@@ -200,7 +198,7 @@ public class ServersTreeStructure extends AbstractTreeStructureBase {
|
||||
ProgramRunnerUtil.executeConfiguration(doGetProject(), selectedValue, DefaultRunExecutor.getRunExecutorInstance());
|
||||
}
|
||||
else {
|
||||
createNewConfiguration(configurationType);
|
||||
configurationManager.createAndRunConfiguration(serverType, RemoteServerNode.this.getValue());
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -214,20 +212,6 @@ public class ServersTreeStructure extends AbstractTreeStructureBase {
|
||||
}
|
||||
}
|
||||
|
||||
private void createNewConfiguration(DeployToServerConfigurationType configurationType) {
|
||||
RunManagerEx runManager = RunManagerEx.getInstanceEx(doGetProject());
|
||||
ConfigurationFactoryEx factory = configurationType.getFactory();
|
||||
RunnerAndConfigurationSettings settings = runManager.createRunConfiguration(configurationType.getDisplayName(), factory);
|
||||
DeployToServerRunConfiguration<?, ?> runConfiguration = (DeployToServerRunConfiguration<?, ?>)settings.getConfiguration();
|
||||
runConfiguration.setServerName(getValue().getName());
|
||||
if (RunDialog.editConfiguration(doGetProject(), settings, "Create Deployment Configuration",
|
||||
DefaultRunExecutor.getRunExecutorInstance())) {
|
||||
runManager.addConfiguration(settings, runManager.isConfigurationShared(settings), runManager.getBeforeRunTasks(runConfiguration), false);
|
||||
runManager.setSelectedConfiguration(settings);
|
||||
ProgramRunnerUtil.executeConfiguration(doGetProject(), settings, DefaultRunExecutor.getRunExecutorInstance());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStopActionEnabled() {
|
||||
return isConnected();
|
||||
|
||||
+5
-34
@@ -24,24 +24,13 @@ import com.intellij.appengine.facet.AppEngineFacet;
|
||||
import com.intellij.appengine.sdk.AppEngineSdk;
|
||||
import com.intellij.appengine.util.AppEngineUtil;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.ExecutionManager;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.configurations.CommandLineBuilder;
|
||||
import com.intellij.execution.configurations.GeneralCommandLine;
|
||||
import com.intellij.execution.configurations.JavaParameters;
|
||||
import com.intellij.execution.configurations.ParametersList;
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
import com.intellij.execution.filters.TextConsoleBuilderFactory;
|
||||
import com.intellij.execution.process.*;
|
||||
import com.intellij.execution.ui.ConsoleView;
|
||||
import com.intellij.execution.ui.ConsoleViewContentType;
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.execution.ui.RunnerLayoutUi;
|
||||
import com.intellij.execution.ui.actions.CloseAction;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.actionSystem.IdeActions;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.Result;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
@@ -96,7 +85,7 @@ public class AppEngineUploader {
|
||||
private final LoggingHandler myLoggingHandler;
|
||||
|
||||
private AppEngineUploader(Project project, Artifact artifact, AppEngineFacet appEngineFacet, AppEngineSdk sdk, AppEngineAuthData authData,
|
||||
ServerRuntimeInstance.DeploymentOperationCallback callback, @Nullable LoggingHandler loggingHandler) {
|
||||
ServerRuntimeInstance.DeploymentOperationCallback callback, @NotNull LoggingHandler loggingHandler) {
|
||||
myProject = project;
|
||||
myArtifact = artifact;
|
||||
myAppEngineFacet = appEngineFacet;
|
||||
@@ -109,8 +98,8 @@ public class AppEngineUploader {
|
||||
@Nullable
|
||||
public static AppEngineUploader createUploader(@NotNull Project project,
|
||||
@NotNull Artifact artifact,
|
||||
@Nullable AppEngineServerConfiguration configuration,
|
||||
@NotNull ServerRuntimeInstance.DeploymentOperationCallback callback, @Nullable LoggingHandler loggingHandler) {
|
||||
@NotNull AppEngineServerConfiguration configuration,
|
||||
@NotNull ServerRuntimeInstance.DeploymentOperationCallback callback, @NotNull LoggingHandler loggingHandler) {
|
||||
final String explodedPath = artifact.getOutputPath();
|
||||
if (explodedPath == null) {
|
||||
callback.errorOccurred("Output path isn't specified for '" + artifact.getName() + "' artifact");
|
||||
@@ -233,26 +222,8 @@ public class AppEngineUploader {
|
||||
}
|
||||
|
||||
final ProcessHandler processHandler = new OSProcessHandler(process, commandLine.getCommandLineString());
|
||||
if (myLoggingHandler == null) {
|
||||
final Executor executor = DefaultRunExecutor.getRunExecutorInstance();
|
||||
final ConsoleView console = TextConsoleBuilderFactory.getInstance().createBuilder(myProject).getConsole();
|
||||
final RunnerLayoutUi ui = RunnerLayoutUi.Factory.getInstance(myProject).create("Upload", "Upload Application", "Upload Application", myProject);
|
||||
final DefaultActionGroup group = new DefaultActionGroup();
|
||||
ui.getOptions().setLeftToolbar(group, ActionPlaces.UNKNOWN);
|
||||
ui.addContent(ui.createContent("upload", console.getComponent(), "Upload Application", null, console.getPreferredFocusableComponent()));
|
||||
|
||||
processHandler.addProcessListener(new MyProcessListener(processHandler, console, null));
|
||||
console.attachToProcess(processHandler);
|
||||
final RunContentDescriptor contentDescriptor = new RunContentDescriptor(console, processHandler, ui.getComponent(), "Upload Application");
|
||||
group.add(ActionManager.getInstance().getAction(IdeActions.ACTION_STOP_PROGRAM));
|
||||
group.add(new CloseAction(executor, contentDescriptor, myProject));
|
||||
|
||||
ExecutionManager.getInstance(myProject).getContentManager().showRunContent(executor, contentDescriptor);
|
||||
}
|
||||
else {
|
||||
processHandler.addProcessListener(new MyProcessListener(processHandler, null, myLoggingHandler));
|
||||
myLoggingHandler.attachToProcess(processHandler);
|
||||
}
|
||||
processHandler.addProcessListener(new MyProcessListener(processHandler, null, myLoggingHandler));
|
||||
myLoggingHandler.attachToProcess(processHandler);
|
||||
processHandler.startNotify();
|
||||
}
|
||||
|
||||
|
||||
+48
-43
@@ -15,19 +15,24 @@
|
||||
*/
|
||||
package com.intellij.appengine.actions;
|
||||
|
||||
import com.intellij.CommonBundle;
|
||||
import com.intellij.appengine.cloud.AppEngineCloudType;
|
||||
import com.intellij.appengine.cloud.AppEngineServerConfiguration;
|
||||
import com.intellij.appengine.facet.AppEngineFacet;
|
||||
import com.intellij.appengine.util.AppEngineUtil;
|
||||
import com.intellij.execution.ProgramRunnerUtil;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
import com.intellij.facet.ProjectFacetManager;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.packaging.artifacts.Artifact;
|
||||
import com.intellij.remoteServer.runtime.deployment.DeploymentRuntime;
|
||||
import com.intellij.remoteServer.runtime.deployment.ServerRuntimeInstance;
|
||||
import com.intellij.remoteServer.configuration.RemoteServer;
|
||||
import com.intellij.remoteServer.configuration.RemoteServersManager;
|
||||
import com.intellij.remoteServer.configuration.deployment.DeploymentConfigurationManager;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -35,52 +40,52 @@ import java.util.List;
|
||||
* @author nik
|
||||
*/
|
||||
public class UploadApplicationAction extends AnAction {
|
||||
public static final String LAST_RUN_CONFIGURATION_PROPERTY = "JAVA_APP_ENGINE_LAST_RUN_CONFIGURATION";
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
final Project project = e.getProject();
|
||||
e.getPresentation().setVisible(project != null && !ProjectFacetManager.getInstance(project).getFacets(AppEngineFacet.ID).isEmpty());
|
||||
}
|
||||
e.getPresentation().setEnabledAndVisible(
|
||||
project != null && !ProjectFacetManager.getInstance(project).getFacets(AppEngineFacet.ID).isEmpty());
|
||||
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final Project project = e.getProject();
|
||||
if (project != null) {
|
||||
final List<Artifact> artifacts = AppEngineUtil.collectAppEngineArtifacts(project, true);
|
||||
if (artifacts.isEmpty()) {
|
||||
Messages.showErrorDialog(project, "No Web or EAR artifacts with AppEngine found in the project", CommonBundle.getErrorTitle());
|
||||
return;
|
||||
}
|
||||
Artifact artifact;
|
||||
if (artifacts.size() == 1) {
|
||||
artifact = artifacts.get(0);
|
||||
String text;
|
||||
RunnerAndConfigurationSettings configurationToRun = getConfigurationToRun(project);
|
||||
if (configurationToRun == null) {
|
||||
text = getTemplatePresentation().getText();
|
||||
}
|
||||
else {
|
||||
final UploadApplicationDialog dialog = new UploadApplicationDialog(project);
|
||||
dialog.show();
|
||||
artifact = dialog.getSelectedArtifact();
|
||||
if (!dialog.isOK() || artifact == null) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
final AppEngineUploader uploader = AppEngineUploader.createUploader(project, artifact, null, new ServerRuntimeInstance.DeploymentOperationCallback() {
|
||||
@Override
|
||||
public void succeeded(@NotNull DeploymentRuntime deploymentRuntime) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void errorOccurred(@NotNull final String errorMessage) {
|
||||
ApplicationManager.getApplication().invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
Messages.showErrorDialog(project, errorMessage, CommonBundle.getErrorTitle());
|
||||
}
|
||||
});
|
||||
}
|
||||
}, null);
|
||||
if (uploader != null) {
|
||||
uploader.startUploading();
|
||||
text = "Upload App Engine Application '" + configurationToRun.getName() + "'";
|
||||
}
|
||||
e.getPresentation().setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static RunnerAndConfigurationSettings getConfigurationToRun(@NotNull Project project) {
|
||||
List<RunnerAndConfigurationSettings> configurations = DeploymentConfigurationManager.getInstance(project).getDeploymentConfigurations(AppEngineCloudType.getInstance());
|
||||
String lastName = PropertiesComponent.getInstance(project).getValue(LAST_RUN_CONFIGURATION_PROPERTY);
|
||||
if (lastName != null) {
|
||||
for (RunnerAndConfigurationSettings configuration : configurations) {
|
||||
if (configuration.getName().equals(lastName)) {
|
||||
return configuration;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ContainerUtil.getFirstItem(configurations);
|
||||
}
|
||||
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final Project project = e.getRequiredData(CommonDataKeys.PROJECT);
|
||||
RunnerAndConfigurationSettings configurationToRun = getConfigurationToRun(project);
|
||||
if (configurationToRun != null) {
|
||||
ProgramRunnerUtil.executeConfiguration(project, configurationToRun, DefaultRunExecutor.getRunExecutorInstance());
|
||||
}
|
||||
else {
|
||||
AppEngineCloudType serverType = AppEngineCloudType.getInstance();
|
||||
List<RemoteServer<AppEngineServerConfiguration>> servers = RemoteServersManager.getInstance().getServers(serverType);
|
||||
DeploymentConfigurationManager.getInstance(project).createAndRunConfiguration(serverType, ContainerUtil.getFirstItem(servers));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.intellij.appengine.actions.UploadApplicationDialog">
|
||||
<grid id="27dc6" binding="myMainPanel" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<xy x="20" y="20" width="500" height="400"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<component id="4f782" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<labelFor value="89e0d"/>
|
||||
<text value="&Web or EAR Artifact to upload:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<vspacer id="b1ee3">
|
||||
<constraints>
|
||||
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
</vspacer>
|
||||
<component id="89e0d" class="javax.swing.JComboBox" binding="myArtifactComboBox">
|
||||
<constraints>
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
</form>
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
*
|
||||
* 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.intellij.appengine.actions;
|
||||
|
||||
import com.intellij.appengine.util.AppEngineUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.packaging.artifacts.Artifact;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class UploadApplicationDialog extends DialogWrapper {
|
||||
private JPanel myMainPanel;
|
||||
private JComboBox myArtifactComboBox;
|
||||
|
||||
public UploadApplicationDialog(Project project) {
|
||||
super(project, true);
|
||||
setTitle("Upload Application");
|
||||
setModal(true);
|
||||
AppEngineUtil.setupAppEngineArtifactCombobox(project, myArtifactComboBox, true);
|
||||
setOKButtonText("Upload");
|
||||
init();
|
||||
}
|
||||
|
||||
public Artifact getSelectedArtifact() {
|
||||
return (Artifact)myArtifactComboBox.getSelectedItem();
|
||||
}
|
||||
|
||||
protected JComponent createCenterPanel() {
|
||||
return myMainPanel;
|
||||
}
|
||||
}
|
||||
+29
@@ -16,8 +16,10 @@
|
||||
package com.intellij.appengine.cloud;
|
||||
|
||||
import com.intellij.appengine.facet.AppEngineAccountDialog;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.options.Configurable;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
@@ -35,6 +37,7 @@ import java.awt.event.ActionListener;
|
||||
* @author nik
|
||||
*/
|
||||
public class AppEngineCloudConfigurable implements Configurable {
|
||||
public static final String EMAIL_KEY = "GOOGLE_APP_ENGINE_ACCOUNT_EMAIL";
|
||||
private final AppEngineServerConfiguration myConfiguration;
|
||||
@Nullable private final Project myProject;
|
||||
private JTextField myEmailField;
|
||||
@@ -95,6 +98,9 @@ public class AppEngineCloudConfigurable implements Configurable {
|
||||
|
||||
public void reset() {
|
||||
String email = myConfiguration.getEmail();
|
||||
if (email == null) {
|
||||
email = getOldEmail();
|
||||
}
|
||||
myEmailField.setText(StringUtil.notNullize(email));
|
||||
if (myConfiguration.isOAuth2()) {
|
||||
myOAuthLoginButton.setSelected(true);
|
||||
@@ -105,8 +111,31 @@ public class AppEngineCloudConfigurable implements Configurable {
|
||||
updateControls();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static String getOldEmail() {
|
||||
for (Project project : ProjectManager.getInstance().getOpenProjects()) {
|
||||
String value = PropertiesComponent.getInstance(project).getValue(EMAIL_KEY);
|
||||
if (value != null) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void removeOldEmail(@NotNull String email) {
|
||||
for (Project project : ProjectManager.getInstance().getOpenProjects()) {
|
||||
String value = PropertiesComponent.getInstance(project).getValue(EMAIL_KEY);
|
||||
if (email.equals(value)) {
|
||||
PropertiesComponent.getInstance(project).unsetValue(EMAIL_KEY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void apply() {
|
||||
String email = getEmail();
|
||||
if (email != null) {
|
||||
removeOldEmail(email);
|
||||
}
|
||||
myConfiguration.setEmail(email);
|
||||
myConfiguration.setOAuth2(isOAuth2());
|
||||
String password = getPassword();
|
||||
|
||||
@@ -39,6 +39,9 @@ import java.util.List;
|
||||
* @author nik
|
||||
*/
|
||||
public class AppEngineCloudType extends ServerType<AppEngineServerConfiguration> {
|
||||
public static AppEngineCloudType getInstance() {
|
||||
return EP_NAME.findExtension(AppEngineCloudType.class);
|
||||
}
|
||||
|
||||
public AppEngineCloudType() {
|
||||
super("google-app-engine");
|
||||
|
||||
+2
-13
@@ -20,7 +20,6 @@ import com.intellij.appengine.cloud.AppEngineCloudConfigurable;
|
||||
import com.intellij.appengine.cloud.AppEngineServerConfiguration;
|
||||
import com.intellij.ide.passwordSafe.PasswordSafe;
|
||||
import com.intellij.ide.passwordSafe.PasswordSafeException;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.options.ShowSettingsUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -34,16 +33,14 @@ import org.jetbrains.annotations.Nullable;
|
||||
public class AppEngineAccountDialog {
|
||||
private static final Logger LOG = Logger.getInstance(AppEngineAccountDialog.class);
|
||||
private static final String PASSWORD_KEY = "GOOGLE_APP_ENGINE_PASSWORD";
|
||||
private static final String EMAIL_KEY = "GOOGLE_APP_ENGINE_ACCOUNT_EMAIL";
|
||||
|
||||
@Nullable
|
||||
public static AppEngineAuthData createAuthData(@NotNull Project project, @Nullable AppEngineServerConfiguration stored) {
|
||||
AppEngineServerConfiguration configuration = stored != null ? stored : new AppEngineServerConfiguration();
|
||||
public static AppEngineAuthData createAuthData(@NotNull Project project, @NotNull AppEngineServerConfiguration configuration) {
|
||||
if (configuration.isOAuth2()) {
|
||||
return AppEngineAuthData.oauth2();
|
||||
}
|
||||
|
||||
String email = getStoredEmail(stored, project);
|
||||
String email = configuration.getEmail();
|
||||
if (!StringUtil.isEmpty(email)) {
|
||||
String password = getStoredPassword(project, email);
|
||||
if (!StringUtil.isEmpty(password)) {
|
||||
@@ -62,14 +59,6 @@ public class AppEngineAccountDialog {
|
||||
return AppEngineAuthData.login(configurable.getEmail(), configurable.getPassword());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static String getStoredEmail(@Nullable AppEngineServerConfiguration configuration, @NotNull Project project) {
|
||||
if (configuration != null) {
|
||||
return configuration.getEmail();
|
||||
}
|
||||
return PropertiesComponent.getInstance(project).getValue(EMAIL_KEY);//todo[nik] remove this
|
||||
}
|
||||
|
||||
public static void storePassword(@NotNull String email, @NotNull String password, @Nullable Project project) {
|
||||
try {
|
||||
PasswordSafe.getInstance().storePassword(project, AppEngineAccountDialog.class, getPasswordKey(email), password);
|
||||
|
||||
Reference in New Issue
Block a user