Merge remote-tracking branch 'origin/master'

This commit is contained in:
Dmitry Trofimov
2012-04-24 18:13:35 +02:00
47 changed files with 226 additions and 118 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2012 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.
@@ -45,6 +45,7 @@ public abstract class ProjectViewTree extends DnDAwareTree {
cellRenderer.setOpaque(false);
cellRenderer.setIconOpaque(false);
setCellRenderer(cellRenderer);
cellRenderer.setTransparentIconBackground(true);
setOpaque(false);
}
@@ -66,6 +67,8 @@ public abstract class ProjectViewTree extends DnDAwareTree {
@Override
protected void paintComponent(Graphics g) {
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
if (isFileColorsEnabled()) {
paintFileColorGutter(g);
}
@@ -74,7 +77,7 @@ public abstract class ProjectViewTree extends DnDAwareTree {
}
@Override
protected boolean isFileColorsEnabled() {
public boolean isFileColorsEnabled() {
return FileColorManagerImpl._isEnabled() && FileColorManagerImpl._isEnabledForProjectView();
}
@@ -0,0 +1,23 @@
/*
* Copyright 2000-2012 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.ui;
/**
* @author Konstantin Bulenkov
*/
public interface ComponentWithFileColors {
boolean isFileColorsEnabled();
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2012 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.
@@ -636,6 +636,10 @@ public class SimpleColoredComponent extends JComponent implements Accessible {
return myTransparentIconBackground;
}
public void setTransparentIconBackground(boolean transparentIconBackground) {
myTransparentIconBackground = transparentIconBackground;
}
private static int getTextBaseLine(FontMetrics metrics, final int height) {
return (height - metrics.getHeight()) / 2 + metrics.getAscent();
}
@@ -21,10 +21,7 @@ import com.intellij.openapi.ui.Queryable;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.wm.impl.content.GraphicsConfig;
import com.intellij.ui.ComponentWithExpandableItems;
import com.intellij.ui.ExpandableItemsHandler;
import com.intellij.ui.ExpandableItemsHandlerFactory;
import com.intellij.ui.LoadingNode;
import com.intellij.ui.*;
import com.intellij.util.ReflectionUtil;
import com.intellij.util.ui.AsyncProcessIcon;
import com.intellij.util.ui.ComponentWithEmptyText;
@@ -48,7 +45,8 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Map;
public class Tree extends JTree implements ComponentWithEmptyText, ComponentWithExpandableItems<Integer>, Autoscroll, Queryable {
public class Tree extends JTree implements ComponentWithEmptyText, ComponentWithExpandableItems<Integer>, Autoscroll, Queryable,
ComponentWithFileColors {
private StatusText myEmptyText;
private ExpandableItemsHandler<Integer> myExpandableItemsHandler;
@@ -132,7 +130,7 @@ public class Tree extends JTree implements ComponentWithEmptyText, ComponentWith
return true;
}
protected boolean isFileColorsEnabled() {
public boolean isFileColorsEnabled() {
return false;
}
@@ -15,6 +15,7 @@
*/
package com.intellij.android.designer.designSurface.layout;
import com.intellij.android.designer.designSurface.layout.grid.GridOperation;
import com.intellij.designer.designSurface.OperationContext;
import com.intellij.designer.model.RadComponent;
@@ -15,6 +15,8 @@
*/
package com.intellij.android.designer.designSurface.layout;
import com.intellij.android.designer.designSurface.layout.actions.ResizeOperation;
import com.intellij.android.designer.designSurface.layout.flow.FlowBaseOperation;
import com.intellij.android.designer.model.ModelParser;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.layout.Gravity;
@@ -15,13 +15,14 @@
*/
package com.intellij.android.designer.designSurface.layout;
import com.intellij.android.designer.designSurface.layout.grid.GridOperation;
import com.intellij.android.designer.model.ModelParser;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.ViewsMetaManager;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.agrid.GridInsertType;
import com.intellij.android.designer.model.table.RadTableLayoutComponent;
import com.intellij.android.designer.model.table.RadTableRowLayout;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.android.designer.model.grid.GridInsertType;
import com.intellij.android.designer.model.layout.table.RadTableLayoutComponent;
import com.intellij.android.designer.model.layout.table.RadTableRowLayout;
import com.intellij.designer.designSurface.OperationContext;
import com.intellij.designer.model.MetaManager;
import com.intellij.designer.model.MetaModel;
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.actions;
import com.intellij.android.designer.model.ModelParser;
import com.intellij.android.designer.model.RadViewComponent;
@@ -13,12 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.actions;
import com.intellij.android.designer.model.ModelParser;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.table.RadTableLayoutComponent;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.android.designer.model.layout.table.RadTableLayoutComponent;
import com.intellij.designer.designSurface.EditOperation;
import com.intellij.designer.designSurface.FeedbackLayer;
import com.intellij.designer.designSurface.OperationContext;
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.actions;
import com.intellij.android.designer.model.ModelParser;
import com.intellij.designer.designSurface.OperationContext;
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.actions;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.propertyTable.renderers.ResourceRenderer;
@@ -13,13 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.caption;
import com.intellij.android.designer.model.ModelParser;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.table.RadCaptionTableColumn;
import com.intellij.android.designer.model.table.RadTableLayoutComponent;
import com.intellij.android.designer.model.table.RadTableRowLayout;
import com.intellij.android.designer.model.layout.table.RadCaptionTableColumn;
import com.intellij.android.designer.model.layout.table.RadTableLayoutComponent;
import com.intellij.android.designer.model.layout.table.RadTableRowLayout;
import com.intellij.designer.designSurface.EditableArea;
import com.intellij.designer.designSurface.FeedbackLayer;
import com.intellij.designer.designSurface.FlowBaseOperation;
@@ -13,12 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.caption;
import com.intellij.android.designer.designSurface.AbstractEditOperation;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.table.RadCaptionTableRow;
import com.intellij.android.designer.model.table.RadTableLayoutComponent;
import com.intellij.android.designer.model.layout.table.RadCaptionTableRow;
import com.intellij.android.designer.model.layout.table.RadTableLayoutComponent;
import com.intellij.designer.designSurface.EditableArea;
import com.intellij.designer.designSurface.FlowBaseOperation;
import com.intellij.designer.designSurface.OperationContext;
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.flow;
import com.intellij.android.designer.designSurface.AbstractEditOperation;
import com.intellij.android.designer.model.RadViewComponent;
@@ -13,8 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.flow;
import com.intellij.android.designer.designSurface.layout.BorderStaticDecorator;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.designer.designSurface.DecorationLayer;
import com.intellij.designer.designSurface.StaticDecorator;
@@ -13,10 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.grid;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.agrid.IGridProvider;
import com.intellij.android.designer.designSurface.layout.BorderStaticDecorator;
import com.intellij.android.designer.designSurface.layout.flow.FlowStaticDecorator;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.android.designer.model.grid.IGridProvider;
import com.intellij.designer.designSurface.DecorationLayer;
import com.intellij.designer.designSurface.StaticDecorator;
import com.intellij.designer.model.RadComponent;
@@ -13,12 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.designSurface.layout;
package com.intellij.android.designer.designSurface.layout.grid;
import com.intellij.android.designer.designSurface.AbstractEditOperation;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.agrid.GridInsertType;
import com.intellij.android.designer.model.agrid.IGridProvider;
import com.intellij.android.designer.designSurface.layout.BorderStaticDecorator;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.android.designer.model.grid.GridInsertType;
import com.intellij.android.designer.model.grid.IGridProvider;
import com.intellij.designer.designSurface.FeedbackLayer;
import com.intellij.designer.designSurface.OperationContext;
import com.intellij.designer.designSurface.feedbacks.AlphaFeedback;
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.agrid;
package com.intellij.android.designer.model.grid;
import com.intellij.designer.model.RadComponent;
import com.intellij.util.ArrayUtil;
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.agrid;
package com.intellij.android.designer.model.grid;
/**
* @author Alexander Lobas
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.agrid;
package com.intellij.android.designer.model.grid;
/**
* @author Alexander Lobas
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.agrid;
package com.intellij.android.designer.model.grid;
import com.intellij.android.designer.model.RadViewComponent;
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.agrid;
package com.intellij.android.designer.model.grid;
import com.intellij.android.designer.designSurface.layout.CaptionStaticDecorator;
import com.intellij.android.designer.model.RadViewComponent;
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.agrid;
package com.intellij.android.designer.model.grid;
import com.intellij.android.designer.model.RadViewComponent;
@@ -17,7 +17,7 @@ package com.intellij.android.designer.model.layout;
import com.intellij.android.designer.designSurface.TreeDropToOperation;
import com.intellij.android.designer.designSurface.layout.AbsoluteLayoutOperation;
import com.intellij.android.designer.designSurface.layout.ResizeOperation;
import com.intellij.android.designer.designSurface.layout.actions.ResizeOperation;
import com.intellij.android.designer.model.RadViewLayoutWithData;
import com.intellij.designer.componentTree.TreeEditOperation;
import com.intellij.designer.designSurface.ComponentDecorator;
@@ -17,8 +17,8 @@ package com.intellij.android.designer.model.layout;
import com.intellij.android.designer.designSurface.TreeDropToOperation;
import com.intellij.android.designer.designSurface.layout.FrameLayoutOperation;
import com.intellij.android.designer.designSurface.layout.LayoutMarginOperation;
import com.intellij.android.designer.designSurface.layout.ResizeOperation;
import com.intellij.android.designer.designSurface.layout.actions.LayoutMarginOperation;
import com.intellij.android.designer.designSurface.layout.actions.ResizeOperation;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.RadViewLayoutWithData;
import com.intellij.designer.componentTree.TreeEditOperation;
@@ -17,6 +17,10 @@ package com.intellij.android.designer.model.layout;
import com.intellij.android.designer.designSurface.TreeDropToOperation;
import com.intellij.android.designer.designSurface.layout.*;
import com.intellij.android.designer.designSurface.layout.actions.LayoutMarginOperation;
import com.intellij.android.designer.designSurface.layout.actions.LayoutWeightOperation;
import com.intellij.android.designer.designSurface.layout.actions.ResizeOperation;
import com.intellij.android.designer.designSurface.layout.flow.FlowStaticDecorator;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.RadViewLayoutWithData;
import com.intellij.designer.componentTree.TreeEditOperation;
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.grid;
package com.intellij.android.designer.model.layout.grid;
import com.intellij.android.designer.model.agrid.RadCaptionColumn;
import com.intellij.android.designer.model.grid.RadCaptionColumn;
/**
* @author Alexander Lobas
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.grid;
package com.intellij.android.designer.model.layout.grid;
import com.intellij.android.designer.model.agrid.RadCaptionRow;
import com.intellij.android.designer.model.grid.RadCaptionRow;
/**
* @author Alexander Lobas
@@ -13,16 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.grid;
package com.intellij.android.designer.model.layout.grid;
import com.intellij.android.designer.designSurface.TreeDropToOperation;
import com.intellij.android.designer.designSurface.layout.GridDecorator;
import com.intellij.android.designer.designSurface.layout.grid.GridDecorator;
import com.intellij.android.designer.designSurface.layout.GridLayoutOperation;
import com.intellij.android.designer.designSurface.layout.LayoutSpanOperation;
import com.intellij.android.designer.designSurface.layout.ResizeOperation;
import com.intellij.android.designer.designSurface.layout.actions.LayoutSpanOperation;
import com.intellij.android.designer.designSurface.layout.actions.ResizeOperation;
import com.intellij.android.designer.model.RadViewLayout;
import com.intellij.android.designer.model.RadViewLayoutWithData;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.designer.componentTree.TreeEditOperation;
import com.intellij.designer.designSurface.*;
import com.intellij.designer.designSurface.selection.ResizeSelectionDecorator;
@@ -13,13 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.grid;
package com.intellij.android.designer.model.layout.grid;
import com.android.ide.common.rendering.api.ViewInfo;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.RadViewContainer;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.agrid.IGridProvider;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.android.designer.model.grid.IGridProvider;
import com.intellij.designer.model.RadComponent;
import java.awt.*;
@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.table;
package com.intellij.android.designer.model.layout.table;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.agrid.RadCaptionColumn;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.android.designer.model.grid.RadCaptionColumn;
import com.intellij.designer.model.RadComponent;
/**
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.table;
package com.intellij.android.designer.model.layout.table;
import com.intellij.android.designer.designSurface.layout.CaptionStaticDecorator;
import com.intellij.android.designer.model.RadViewComponent;
@@ -13,14 +13,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.table;
package com.intellij.android.designer.model.layout.table;
import com.intellij.android.designer.designSurface.TreeDropToOperation;
import com.intellij.android.designer.designSurface.layout.*;
import com.intellij.android.designer.designSurface.layout.actions.ResizeOperation;
import com.intellij.android.designer.designSurface.layout.caption.HorizontalCaptionFlowBaseOperation;
import com.intellij.android.designer.designSurface.layout.caption.VerticalCaptionFlowBaseOperation;
import com.intellij.android.designer.designSurface.layout.grid.GridDecorator;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.RadViewLayout;
import com.intellij.android.designer.model.RadViewLayoutWithData;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.designer.componentTree.TreeEditOperation;
import com.intellij.designer.designSurface.*;
import com.intellij.designer.designSurface.selection.ResizeSelectionDecorator;
@@ -13,14 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.table;
package com.intellij.android.designer.model.layout.table;
import com.android.ide.common.rendering.api.ViewInfo;
import com.intellij.android.designer.model.ModelParser;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.RadViewContainer;
import com.intellij.android.designer.model.agrid.GridInfo;
import com.intellij.android.designer.model.agrid.IGridProvider;
import com.intellij.android.designer.model.grid.GridInfo;
import com.intellij.android.designer.model.grid.IGridProvider;
import com.intellij.designer.model.RadComponent;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.psi.xml.XmlTag;
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.android.designer.model.table;
package com.intellij.android.designer.model.layout.table;
import com.intellij.android.designer.designSurface.layout.LayoutSpanOperation;
import com.intellij.android.designer.designSurface.layout.actions.LayoutSpanOperation;
import com.intellij.android.designer.model.ModelParser;
import com.intellij.android.designer.model.RadViewComponent;
import com.intellij.android.designer.model.layout.AbstractGravityAction;
@@ -1099,8 +1099,8 @@
</creation>
</meta>
<meta model="com.intellij.android.designer.model.table.RadTableLayoutComponent"
layout="com.intellij.android.designer.model.table.RadTableLayout"
<meta model="com.intellij.android.designer.model.layout.table.RadTableLayoutComponent"
layout="com.intellij.android.designer.model.layout.table.RadTableLayout"
class="android.widget.TableLayout"
tag="TableLayout">
@@ -1120,7 +1120,7 @@
</meta>
<meta model="com.intellij.android.designer.model.RadViewContainer"
layout="com.intellij.android.designer.model.table.RadTableRowLayout"
layout="com.intellij.android.designer.model.layout.table.RadTableRowLayout"
class="android.widget.TableRow"
tag="TableRow">
@@ -1137,8 +1137,8 @@
</creation>
</meta>
<meta model="com.intellij.android.designer.model.grid.RadGridLayoutComponent"
layout="com.intellij.android.designer.model.grid.RadGridLayout"
<meta model="com.intellij.android.designer.model.layout.grid.RadGridLayoutComponent"
layout="com.intellij.android.designer.model.layout.grid.RadGridLayout"
class="android.widget.GridLayout"
tag="GridLayout">
@@ -10,7 +10,7 @@
<children>
<grid id="e7277" layout-manager="GridBagLayout">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
@@ -91,7 +91,7 @@
<grid id="ca987" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
@@ -31,6 +31,8 @@ import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.encoding.EncodingManager;
import com.intellij.openapi.vfs.encoding.EncodingProjectManager;
@@ -99,7 +101,7 @@ public class MavenExternalParameters {
params.setWorkingDirectory(parameters.getWorkingDirFile());
params.setJdk(getJdk(runnerSettings, project != null && MavenRunner.getInstance(project).getState() == runnerSettings));
params.setJdk(getJdk(project, runnerSettings, project != null && MavenRunner.getInstance(project).getState() == runnerSettings));
final String mavenHome = resolveMavenHome(coreSettings, project, runConfiguration);
@@ -121,12 +123,29 @@ public class MavenExternalParameters {
}
@NotNull
private static Sdk getJdk(MavenRunnerSettings runnerSettings, boolean isGlobalRunnerSettings) throws ExecutionException {
private static Sdk getJdk(@Nullable Project project, MavenRunnerSettings runnerSettings, boolean isGlobalRunnerSettings) throws ExecutionException {
String name = runnerSettings.getJreName();
if (name.equals(MavenRunnerSettings.USE_INTERNAL_JAVA)) {
return JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk();
}
if (name.equals(MavenRunnerSettings.USE_PROJECT_JDK)) {
if (project != null) {
Sdk res = ProjectRootManager.getInstance(project).getProjectSdk();
if (res != null) {
return res;
}
}
if (project == null) {
Sdk recent = ProjectJdkTable.getInstance().findMostRecentSdkOfType(JavaSdk.getInstance());
if (recent != null) return recent;
return JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk();
}
throw new ProjectJdkSettingsOpenerExecutionException("Project JDK is not specified. <a href='#'>Configure</a>", project);
}
if (name.equals(MavenRunnerSettings.USE_JAVA_HOME)) {
final String javaHome = System.getenv(JAVA_HOME);
if (StringUtil.isEmptyOrSpaces(javaHome)) {
@@ -355,6 +374,23 @@ public class MavenExternalParameters {
}
}
private static class ProjectJdkSettingsOpenerExecutionException extends ExecutionException implements HyperlinkListener {
private final Project myProject;
public ProjectJdkSettingsOpenerExecutionException(final String s, Project project) {
super(s);
myProject = project;
}
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED) return;
ProjectSettingsService.getInstance(myProject).openProjectSettings();
}
}
private static class RunConfigurationOpenerExecutionException extends ExecutionException implements HyperlinkListener {
private final MavenRunConfiguration myRunConfiguration;
@@ -21,6 +21,10 @@ import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.RawCommandLineEditor;
import org.jetbrains.annotations.Nls;
@@ -50,7 +54,7 @@ public abstract class MavenRunnerConfigurable implements SearchableConfigurable,
private Map<String, String> myProperties;
public MavenRunnerConfigurable(Project p, boolean isRunConfiguration) {
public MavenRunnerConfigurable(@NotNull Project p, boolean isRunConfiguration) {
myProject = p;
myRunConfigurationMode = isRunConfiguration;
}
@@ -189,7 +193,7 @@ public abstract class MavenRunnerConfigurable implements SearchableConfigurable,
myVMParametersEditor.setText(data.getVmOptions());
mySkipTestsCheckBox.setSelected(data.isSkipTests());
Map<String, String> jdkMap = data.collectJdkNamesAndDescriptions();
Map<String, String> jdkMap = collectJdkNamesAndDescriptions();
if (!jdkMap.containsKey(data.getJreName())) {
jdkMap.put(data.getJreName(), data.getJreName());
}
@@ -204,6 +208,32 @@ public abstract class MavenRunnerConfigurable implements SearchableConfigurable,
myPropertiesPanel.setDataFromMap(data.getMavenProperties());
}
private Map<String, String> collectJdkNamesAndDescriptions() {
Map<String, String> result = new LinkedHashMap<String, String>();
for (Sdk projectJdk : ProjectJdkTable.getInstance().getSdksOfType(JavaSdk.getInstance())) {
String name = projectJdk.getName();
result.put(name, name);
}
result.put(MavenRunnerSettings.USE_INTERNAL_JAVA, RunnerBundle.message("maven.java.internal"));
String projectJdkTitle;
String projectJdk = ProjectRootManager.getInstance(myProject).getProjectSdkName();
if (projectJdk == null) {
projectJdkTitle = "Use Project JDK (not defined yet)";
}
else {
projectJdkTitle = "Use Project JDK (" + projectJdk + ')';
}
result.put(MavenRunnerSettings.USE_PROJECT_JDK, projectJdkTitle);
result.put(MavenRunnerSettings.USE_JAVA_HOME, RunnerBundle.message("maven.java.home.env"));
return result;
}
void setData(MavenRunnerSettings data) {
data.setRunMavenInBackground(myRunInBackgroundCheckbox.isSelected());
data.setVmOptions(myVMParametersEditor.getText().trim());
@@ -21,15 +21,12 @@ package org.jetbrains.idea.maven.execution;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkType;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -37,10 +34,11 @@ import java.util.Map;
public class MavenRunnerSettings implements Cloneable {
@NonNls public static final String USE_INTERNAL_JAVA = "#JAVA_INTERNAL";
@NonNls public static final String USE_PROJECT_JDK = "#USE_PROJECT_JDK";
@NonNls public static final String USE_JAVA_HOME = "#JAVA_HOME";
private boolean runMavenInBackground = true;
@NotNull private String jreName = "";
@NotNull private String jreName = USE_PROJECT_JDK;
@NotNull private String vmOptions = "";
private boolean skipTests = false;
private Map<String, String> mavenProperties = new LinkedHashMap<String, String>();
@@ -57,9 +55,6 @@ public class MavenRunnerSettings implements Cloneable {
@NotNull
public String getJreName() {
if (StringUtil.isEmpty(jreName)) {
jreName = getDefaultJdkName();
}
return jreName;
}
@@ -98,30 +93,6 @@ public class MavenRunnerSettings implements Cloneable {
this.mavenProperties = mavenProperties;
}
public Map<String, String> collectJdkNamesAndDescriptions() {
Map<String, String> result = new LinkedHashMap<String, String>();
for (Sdk projectJdk : ProjectJdkTable.getInstance().getSdksOfType(getSdkType())) {
String name = projectJdk.getName();
result.put(name, name);
}
result.put(USE_INTERNAL_JAVA, RunnerBundle.message("maven.java.internal"));
result.put(USE_JAVA_HOME, RunnerBundle.message("maven.java.home.env"));
return result;
}
private SdkType getSdkType() {
return JavaSdk.getInstance();
}
public String getDefaultJdkName() {
Sdk recent = ProjectJdkTable.getInstance().findMostRecentSdkOfType(getSdkType());
if (recent == null) return USE_INTERNAL_JAVA;
return recent.getName();
}
public void addListener(Listener l) {
myListeners.add(l);
}
@@ -27,6 +27,7 @@ import com.intellij.ui.PanelWithAnchor;
import com.intellij.ui.components.JBLabel;
import com.intellij.util.Alarm;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.utils.MavenUtil;
@@ -127,6 +128,11 @@ public class MavenEnvironmentForm implements PanelWithAnchor {
localRepositoryOverrider.reset(data.getLocalRepository());
}
@NotNull
public String getMavenHome() {
return mavenHomeOverrider.getResult();
}
public JComponent createComponent() {
// all listeners will be removed when dialog is closed
mavenHomeComponent.getComponent().addBrowseFolderListener(ProjectBundle.message("maven.select.maven.home.directory"), "", null,
@@ -15,15 +15,14 @@
*/
package org.jetbrains.idea.maven.wizards;
import com.intellij.ide.util.projectWizard.ModuleBuilder;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.ide.util.projectWizard.SourcePathsBuilder;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.ide.util.projectWizard.*;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.DumbAwareRunnable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import com.intellij.openapi.util.IconLoader;
@@ -104,10 +103,18 @@ public class MavenModuleBuilder extends ModuleBuilder implements SourcePathsBuil
return StdModuleTypes.JAVA;
}
@Override
public boolean isSuitableSdk(Sdk sdk) {
return sdk.getSdkType() == JavaSdk.getInstance();
}
@Override
public ModuleWizardStep[] createWizardSteps(WizardContext wizardContext, ModulesProvider modulesProvider) {
return new ModuleWizardStep[]{new MavenModuleWizardStep(wizardContext.getProject(), this),
new SelectPropertiesStep(wizardContext.getProject(), this)};
return new ModuleWizardStep[]{
new MavenModuleWizardStep(wizardContext.getProject(), this),
new SelectPropertiesStep(wizardContext.getProject(), this),
ProjectWizardStepFactory.getInstance().createProjectJdkStep(wizardContext)
};
}
public MavenProject findPotentialParentProject(Project project) {
@@ -16,21 +16,21 @@
package org.jetbrains.idea.maven.wizards;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.util.containers.hash.HashMap;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.execution.MavenPropertiesPanel;
import org.jetbrains.idea.maven.indices.MavenIndex;
import org.jetbrains.idea.maven.model.MavenArchetype;
import org.jetbrains.idea.maven.model.MavenId;
import org.jetbrains.idea.maven.project.MavenEnvironmentForm;
import org.jetbrains.idea.maven.project.MavenGeneralSettings;
import org.jetbrains.idea.maven.project.MavenProjectsManager;
import org.jetbrains.idea.maven.utils.MavenUtil;
import javax.swing.*;
import java.awt.*;
import java.util.Collections;
import java.io.File;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -100,6 +100,20 @@ public class SelectPropertiesStep extends ModuleWizardStep {
return myBuilder.getArchetype() != null;
}
@Override
public boolean validate() throws ConfigurationException {
File mavenHome = MavenUtil.resolveMavenHomeDirectory(myEnvironmentForm.getMavenHome());
if (mavenHome == null) {
throw new ConfigurationException("Maven home directory is not specified");
}
if (!MavenUtil.isValidMavenHome(mavenHome)) {
throw new ConfigurationException("Maven home directory is invalid: " + mavenHome);
}
return true;
}
@Override
public void updateDataModel() {
myBuilder.setEnvironmentForm(myEnvironmentForm);
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.