Skip to content

Commit

Permalink
AddonManager now reuses the info from the selected project (if
Browse files Browse the repository at this point in the history
available)
  • Loading branch information
gastaldi committed May 30, 2013
1 parent 47c4a08 commit 7651fbf
Show file tree
Hide file tree
Showing 7 changed files with 279 additions and 199 deletions.
336 changes: 173 additions & 163 deletions addon-dependencies.graphml

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions addon-manager/addon/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,17 @@
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>dependencies</artifactId>
<version>2.0.0-SNAPSHOT</version>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>ui</artifactId>
<version>2.0.0-SNAPSHOT</version>
<classifier>forge-addon</classifier>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>projects</artifactId>
<classifier>forge-addon</classifier>
<optional>true</optional>
</dependency>
Expand Down
12 changes: 10 additions & 2 deletions addon-manager/impl/pom.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jboss.forge.addon</groupId>
Expand All @@ -25,15 +26,22 @@
<artifactId>dependencies-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>ui-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>resources-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>ui-api</artifactId>
<artifactId>projects-api</artifactId>
<version>2.0.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>

</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,18 @@
import javax.inject.Singleton;

import org.jboss.forge.addon.manager.AddonManager;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.ui.UICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UISelection;
import org.jboss.forge.addon.ui.context.UIValidationContext;
import org.jboss.forge.addon.ui.input.UIInput;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.metadata.WithAttributes;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Metadata;
Expand All @@ -23,14 +29,20 @@ public class AddonInstallCommand implements UICommand
private AddonManager addonManager;

@Inject
@WithAttributes(label = "Group ID", required = true)
private UIInput<String> groupId;

@Inject
@WithAttributes(label = "Name", required = true)
private UIInput<String> name;

@Inject
@WithAttributes(label = "Version", required = true)
private UIInput<String> version;

@Inject
private ProjectFactory projectFactory;

@Override
public UICommandMetadata getMetadata()
{
Expand All @@ -47,30 +59,15 @@ public boolean isEnabled(UIContext context)
@Override
public void initializeUI(UIBuilder builder) throws Exception
{
initializeGroupIdInput(builder);
initializeNameInput(builder);
initializeVersionInput(builder);
}

private void initializeGroupIdInput(UIBuilder builder)
{
groupId.setLabel("Group Id:");
groupId.setRequired(true);
builder.add(groupId);
}

private void initializeNameInput(UIBuilder builder)
{
name.setLabel("Name:");
name.setRequired(true);
builder.add(name);
}

private void initializeVersionInput(UIBuilder builder)
{
version.setLabel("Version:");
version.setRequired(true);
builder.add(version);
Project project = getSelectedProject(builder.getUIContext());
if (project != null)
{
MetadataFacet facet = project.getFacet(MetadataFacet.class);
groupId.setDefaultValue(facet.getTopLevelPackage());
name.setDefaultValue(facet.getProjectName());
version.setDefaultValue(facet.getProjectVersion());
}
builder.add(groupId).add(name).add(version);
}

@Override
Expand Down Expand Up @@ -98,4 +95,17 @@ protected String getCoordinates()
return groupId.getValue() + ':' + name.getValue() + ',' + version.getValue();
}

/**
* Returns the selected project. null if no project is found
*/
protected Project getSelectedProject(UIContext context)
{
Project project = null;
UISelection<FileResource<?>> initialSelection = context.getInitialSelection();
if (initialSelection != null)
{
project = projectFactory.findProject(initialSelection.get());
}
return project;
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
package org.jboss.forge.addon.manager.impl.commands;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import javax.inject.Inject;

import org.jboss.forge.addon.manager.AddonManager;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.ui.UICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UISelection;
import org.jboss.forge.addon.ui.context.UIValidationContext;
import org.jboss.forge.addon.ui.input.UISelectMany;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.metadata.WithAttributes;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Metadata;
Expand All @@ -31,8 +38,12 @@ public class AddonRemoveCommand implements UICommand, AddonCommandConstants
private AddonManager manager;

@Inject
@WithAttributes(label = "Installed addons")
private UISelectMany<AddonId> addons;

@Inject
private ProjectFactory projectFactory;

@Override
public boolean isEnabled(UIContext context)
{
Expand All @@ -49,7 +60,6 @@ public UICommandMetadata getMetadata()
@Override
public void initializeUI(UIBuilder builder) throws Exception
{
addons.setLabel("Installed addons");
Set<AddonId> choices = new HashSet<AddonId>();
for (AddonRepository repository : forge.getRepositories())
{
Expand All @@ -63,6 +73,17 @@ public void initializeUI(UIBuilder builder) throws Exception
}
}
addons.setValueChoices(choices);
Project project = getSelectedProject(builder.getUIContext());
if (project != null)
{
MetadataFacet facet = project.getFacet(MetadataFacet.class);
String name = facet.getTopLevelPackage() + facet.getProjectName();
AddonId selectedAddonId = AddonId.from(name, facet.getProjectVersion());
if (choices.contains(selectedAddonId))
{
addons.setDefaultValue(Arrays.asList(selectedAddonId));
}
}
builder.add(addons);
}

Expand Down Expand Up @@ -91,4 +112,18 @@ public Result execute(UIContext context) throws Exception
return Results.success("Removed addons: " + builder.toString());
}

/**
* Returns the selected project. null if no project is found
*/
protected Project getSelectedProject(UIContext context)
{
Project project = null;
UISelection<FileResource<?>> initialSelection = context.getInitialSelection();
if (initialSelection != null)
{
project = projectFactory.findProject(initialSelection.get());
}
return project;
}

}
21 changes: 20 additions & 1 deletion addon-manager/pom.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jboss.forge</groupId>
Expand Down Expand Up @@ -39,6 +40,24 @@
<artifactId>addon-manager-impl</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>dependencies</artifactId>
<version>2.0.0-SNAPSHOT</version>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>ui</artifactId>
<version>2.0.0-SNAPSHOT</version>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>projects</artifactId>
<version>2.0.0-SNAPSHOT</version>
<classifier>forge-addon</classifier>
</dependency>
</dependencies>
</dependencyManagement>

Expand Down
6 changes: 0 additions & 6 deletions javaee/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,6 @@
<version>2.0.0-SNAPSHOT</version>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>ui</artifactId>
<version>2.0.0-SNAPSHOT</version>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.descriptors</groupId>
<artifactId>shrinkwrap-descriptors-bom</artifactId>
Expand Down

0 comments on commit 7651fbf

Please sign in to comment.