Skip to content

Commit

Permalink
Refactor Forge wizard
Browse files Browse the repository at this point in the history
  • Loading branch information
adam-wyluda committed Jun 7, 2014
1 parent 49517e0 commit 34e2be9
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,8 @@ public ForgeWizardModel(CommandController originalController)
{
super(originalController.getMetadata().getName());

addWizardSteps(originalController);
((ForgeWizardStep) getCurrentStep()).refreshNavigationState(getCurrentNavigationState());
}

private void addWizardSteps(CommandController originalController)
{
add(new ForgeWizardStep(originalController));
ForgeWizardStep step = new ForgeWizardStep(this, originalController);
add(step);
step.refreshNavigationState();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
import net.miginfocom.swing.MigLayout;
import org.jboss.forge.addon.ui.controller.CommandController;
import org.jboss.forge.addon.ui.controller.WizardCommandController;
import org.jboss.forge.addon.ui.input.InputComponent;
import org.jboss.forge.plugin.idea.ui.component.ComponentBuilder;
import org.jboss.forge.plugin.idea.ui.component.ComponentBuilderRegistry;

import javax.swing.*;

Expand All @@ -22,10 +25,12 @@
*/
public class ForgeWizardStep extends WizardStep<ForgeWizardModel>
{
private final ForgeWizardModel model;
private final CommandController controller;

public ForgeWizardStep(CommandController controller)
public ForgeWizardStep(ForgeWizardModel model, CommandController controller)
{
this.model = model;
this.controller = controller;

try
Expand All @@ -37,11 +42,8 @@ public ForgeWizardStep(CommandController controller)
// TODO Handle Wizard exceptions
e.printStackTrace();
}
}

public CommandController getController()
{
return controller;
refreshNavigationState();
}

@SuppressWarnings({"unchecked", "rawtypes"})
Expand All @@ -51,44 +53,31 @@ public JComponent prepare(WizardNavigationState state)
JPanel container = new JPanel(new MigLayout("fillx,wrap 2",
"[left]rel[grow,fill]", "[]10[]"));

// TODO Build panel for UICommand
// TODO Build panel for UICommands

// for (InputComponent input : uiBuilder.getInputs())
// {
// ComponentBuilder builder = ComponentBuilderRegistry.INSTANCE
// .getBuilderFor(input);
// builder.build(input, container);
// }
for (InputComponent input : controller.getInputs().values())
{
ComponentBuilder builder = ComponentBuilderRegistry.INSTANCE
.getBuilderFor(input);
builder.build(input, container);
}

return container;
}

@Override
public ForgeWizardStep onNext(ForgeWizardModel model)
public WizardStep onNext(ForgeWizardModel model)
{
// If it's not a wizard, we don't care
if (!(isWizardController()))
{
return null;
}

try
{
CommandController nextController = getWizardCommandController().next();
ForgeWizardStep nextStep = new ForgeWizardStep(nextController);
refreshNavigationState(model.getCurrentNavigationState(), nextController);
return nextStep;
}
catch (Exception e)
{
// TODO Handle Wizard exceptions
e.printStackTrace();
return null;
}
return navigate(true);
}

@Override
public WizardStep onPrevious(ForgeWizardModel model)
{
return navigate(false);
}

private WizardStep navigate(boolean forward)
{
// If it's not a wizard, we don't care
if (!(isWizardController()))
Expand All @@ -98,10 +87,18 @@ public WizardStep onPrevious(ForgeWizardModel model)

try
{
CommandController previousController = getWizardCommandController().previous();
ForgeWizardStep previousStep = new ForgeWizardStep(previousController);
refreshNavigationState(model.getCurrentNavigationState(), previousController);
return previousStep;
CommandController nextController;

if (forward)
{
nextController = getWizardCommandController().next();
}
else
{
nextController = getWizardCommandController().previous();
}

return new ForgeWizardStep(this.model, nextController);
}
catch (Exception e)
{
Expand All @@ -127,65 +124,52 @@ public boolean onFinish()
return true;
}

public void refreshNavigationState(WizardNavigationState navigationState)
public void refreshNavigationState()
{
refreshNavigationState(navigationState, this.controller);
}
WizardNavigationState navigationState = model.getCurrentNavigationState();

private static void refreshNavigationState(WizardNavigationState navigationState, CommandController controller)
{
navigationState.CANCEL.setEnabled(true);
navigationState.PREVIOUS.setEnabled(isPreviousEnabled(controller));
navigationState.NEXT.setEnabled(isNextEnabled(controller));
navigationState.FINISH.setEnabled(isFinishEnabled(controller));
navigationState.PREVIOUS.setEnabled(isPreviousEnabled());
navigationState.NEXT.setEnabled(isNextEnabled());
navigationState.FINISH.setEnabled(isFinishEnabled());
}

private static boolean isPreviousEnabled(CommandController controller)
private boolean isPreviousEnabled()
{
if (!isWizardController(controller))
if (!isWizardController())
{
return false;
}

return getWizardCommandController(controller).canMoveToPreviousStep();
return getWizardCommandController().canMoveToPreviousStep();
}

private static boolean isNextEnabled(CommandController controller)
private boolean isNextEnabled()
{
if (!isWizardController(controller))
if (!isWizardController())
{
return false;
}

return getWizardCommandController(controller).canMoveToNextStep();
return getWizardCommandController().canMoveToNextStep();
}

private static boolean isFinishEnabled(CommandController controller)
private boolean isFinishEnabled()
{
if (!isWizardController(controller))
if (!isWizardController())
{
return false;
}

return getWizardCommandController(controller).canExecute();
return getWizardCommandController().canExecute();
}

private boolean isWizardController()
{
return isWizardController(this.controller);
}

private static boolean isWizardController(CommandController controller)
{
return controller instanceof WizardCommandController;
}

private WizardCommandController getWizardCommandController()
{
return getWizardCommandController(this.controller);
}

private static WizardCommandController getWizardCommandController(CommandController controller)
{
return (WizardCommandController) controller;
}
Expand Down

0 comments on commit 34e2be9

Please sign in to comment.