Skip to content

Commit

Permalink
FORGE-808 Initial implementation of the F2 scaffold wizard
Browse files Browse the repository at this point in the history
  • Loading branch information
VineetReynolds committed Jul 26, 2013
1 parent 3282502 commit bc5b692
Show file tree
Hide file tree
Showing 6 changed files with 193 additions and 68 deletions.
132 changes: 70 additions & 62 deletions scaffold/addon/pom.xml
Original file line number Diff line number Diff line change
@@ -1,66 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<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>
<artifactId>scaffold-parent</artifactId>
<version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>scaffold</artifactId>
<name>Forge - Scaffold Addon</name>
<dependencies>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-impl</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-spi</artifactId>
<classifier>forge-addon</classifier>
</dependency>

<!-- Addon Dependencies -->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-parent</artifactId>
<version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>scaffold</artifactId>
<name>Forge - Scaffold Addon</name>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>ui</artifactId>
<classifier>forge-addon</classifier>
<groupId>org.jboss.forge.furnace</groupId>
<artifactId>container-cdi</artifactId>
<version>2.0.0.Alpha7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>projects</artifactId>
<classifier>forge-addon</classifier>
</dependency>

<!-- Furnace Container -->
<dependency>
<groupId>org.jboss.forge.furnace</groupId>
<artifactId>container-cdi</artifactId>
<classifier>forge-addon</classifier>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>create-forge-addon</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>forge-addon</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-impl</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>ui</artifactId>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>projects</artifactId>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge.furnace</groupId>
<artifactId>container-cdi</artifactId>
<classifier>forge-addon</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.furnace</groupId>
<artifactId>container-cdi</artifactId>
<version>2.0.0.Alpha7</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>create-forge-addon</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>forge-addon</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
8 changes: 4 additions & 4 deletions scaffold/api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-spi</artifactId>
<artifactId>projects</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>projects</artifactId>
<classifier>forge-addon</classifier>
<artifactId>ui-api</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.jboss.forge.addon.projects.ProjectFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.ui.wizard.UIWizardStep;

/**
* Provides an implementation of Scaffolding for various UI code generation operations.
Expand Down Expand Up @@ -46,4 +47,14 @@ public interface ScaffoldProvider extends ProjectFacet
* responsibility of the ScaffoldProvider to verify whether it can act on the provided resource.
*/
List<Resource<?>> generateFrom(List<Resource<?>> resource, DirectoryResource targetDir, boolean overwrite);

/**
* Return the {@link UIWizardStep} {@link Class} that sets up the scaffold of this type.
*/
Class<? extends UIWizardStep> setupStep();

/**
* Return the {@link UIWizardStep} {@link Class} that scaffolds resources supported by this type.
*/
Class<? extends UIWizardStep> selectResourcesStep();
}
4 changes: 2 additions & 2 deletions scaffold/impl/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-spi</artifactId>
<classifier>forge-addon</classifier>
<artifactId>ui-api</artifactId>
<scope>provided</scope>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package org.jboss.forge.scaffoldx;

import javax.inject.Inject;

import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
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.NavigationResult;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.addon.ui.wizard.UIWizard;

public class ScaffoldFromXWizard implements UIWizard {

@Inject
@WithAttributes(label = "type", required = true)
UIInput<String> provider;

@Override
public UICommandMetadata getMetadata() {
return Metadata.forCommand(getClass()).name("Scaffold from")
.description("Scaffold UI using")
.category(Categories.create("Project", "Generation"));
}

@Override
public boolean isEnabled(UIContext context) {
return true;
}

@Override
public void initializeUI(UIBuilder builder) throws Exception {
builder.add(provider);
}

@Override
public void validate(UIValidationContext validator) {

}

@Override
public Result execute(UIContext context) throws Exception {
return Results.success();
}

@Override
public NavigationResult next(UIContext context) throws Exception {
return null;
/* if (provider.getValue().isInstalled()) {
return Results
.navigateTo(provider.getValue().selectResourcesStep());
}
return Results.navigateTo(provider.getValue().setupStep());*/
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.jboss.forge.scaffoldx;

import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIValidationContext;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.result.NavigationResult;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.addon.ui.wizard.UIWizardStep;

public class ScaffoldSetupStep implements UIWizardStep {

@Override
public NavigationResult next(UIContext context) throws Exception {
return null;
}

@Override
public UICommandMetadata getMetadata() {
return Metadata.forCommand(getClass()).name("Setup")
.description("Setup scaffold provider");
}

@Override
public boolean isEnabled(UIContext context) {
return false;
}

@Override
public void initializeUI(UIBuilder builder) throws Exception {

}

@Override
public void validate(UIValidationContext validator) {

}

@Override
public Result execute(UIContext context) throws Exception {
return null;
}

}

0 comments on commit bc5b692

Please sign in to comment.