Chromium Code Reviews| Index: plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java |
| diff --git a/plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java b/plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java |
| index 880d30146410876c05e8af065dca5dde12e0c528..4f5730537ca102681ed27e61d836e3a071d269b7 100644 |
| --- a/plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java |
| +++ b/plugins/org.chromium.debug.ui/src/org/chromium/debug/ui/liveedit/WizardLogicBuilder.java |
| @@ -41,8 +41,12 @@ import org.chromium.debug.ui.WizardUtils.WizardFinishController; |
| import org.chromium.debug.ui.WizardUtils.WizardFinisher; |
| import org.chromium.debug.ui.WizardUtils.WizardLogic; |
| import org.chromium.debug.ui.actions.ChooseVmControl; |
| +import org.chromium.debug.ui.liveedit.LiveEditDiffViewer.Input; |
| import org.chromium.debug.ui.liveedit.PushChangesWizard.FinisherDelegate; |
| +import org.chromium.sdk.TextStreamPosition; |
| import org.chromium.sdk.UpdatableScript.ChangeDescription; |
| +import org.chromium.sdk.UpdatableScript.CompileErrorFailure; |
| +import org.eclipse.osgi.util.NLS; |
| /** |
| * Creates Updater-based logic implementation of the wizard. It is responsible for proper data |
| @@ -283,23 +287,36 @@ class WizardLogicBuilder { |
| @Calculate |
| public Optional<? extends LiveEditDiffViewer.Input> calculate( |
| PreviewLoader.Data previewRawResultParam) { |
| - PushChangesPlan changesPlan = singlePlanValue.getValue(); |
| - ChangeDescription changeDescription = previewRawResultParam.getChangeDescription(); |
| - Optional<LiveEditDiffViewer.Input> result; |
| - if (changeDescription == null) { |
| - result = createOptional(null); |
| - } else { |
| - try { |
| + final PushChangesPlan changesPlan = singlePlanValue.getValue(); |
| + |
| + return previewRawResultParam.accept( |
| + new PreviewLoader.Data.Visitor<Optional<LiveEditDiffViewer.Input>>() { |
| + @Override |
| + public Optional<LiveEditDiffViewer.Input> visitSuccess( |
| + ChangeDescription changeDescription) { |
| + if (changeDescription == null) { |
| + return createOptional(null); |
| + } else { |
| + try { |
| + LiveEditDiffViewer.Input viewerInput = |
| + PushResultParser.createViewerInput(changeDescription, changesPlan, true); |
| + return createOptional(viewerInput); |
| + } catch (RuntimeException e) { |
| + ChromiumDebugPlugin.log(e); |
| + return createErrorOptional(new Message( |
| + "Error in getting preview: " + e.toString(), MessagePriority.WARNING)); |
|
apavlov
2013/01/24 13:06:27
"Failed to create preview". Don't you want to i18n
Peter Rybin
2013/01/24 14:08:22
Done.
|
| + } |
| + } |
| + } |
| + |
| + @Override |
| + public Optional<Input> visitCompileError(CompileErrorFailure compileError) { |
| LiveEditDiffViewer.Input viewerInput = |
| - PushResultParser.createViewerInput(changeDescription, changesPlan, true); |
| - result = createOptional(viewerInput); |
| - } catch (RuntimeException e) { |
| - ChromiumDebugPlugin.log(e); |
| - result = createErrorOptional(new Message( |
| - "Error in getting preview: " + e.toString(), MessagePriority.WARNING)); |
| + PushResultParser.createCompileErrorViewerInput(compileError, changesPlan, |
| + true); |
| + return createOptional(viewerInput); |
| } |
| - } |
| - return result; |
| + }); |
| } |
| @DependencyGetter |
| public ValueSource<Optional<PreviewLoader.Data>> |
| @@ -335,9 +352,23 @@ class WizardLogicBuilder { |
| final ValueProcessor<Optional<Void>> warningValue = createProcessor( |
| new Gettable<Optional<Void>>() { |
| public Optional<Void> getValue() { |
| - Optional<?> previewResult = previewValue.getValue(); |
| + Optional<PreviewLoader.Data> previewResult = previewRawResultValue.getValue(); |
| if (previewResult.isNormal()) { |
| - return createOptional(null); |
| + PreviewLoader.Data data = previewResult.getNormal(); |
| + return data.accept(new PreviewLoader.Data.Visitor<Optional<Void>>() { |
| + @Override public Optional<Void> visitSuccess(ChangeDescription changeDescription) { |
| + return createOptional(null); |
| + } |
| + @Override |
| + public Optional<Void> visitCompileError(CompileErrorFailure compileError) { |
| + TextStreamPosition start = compileError.getStartPosition(); |
| + String messageString = NLS.bind("Compile error: {0} ({1}:{2})", |
| + new Object[] { compileError.getCompilerMessage(), |
| + start.getLine(), start.getColumn() }); |
| + return createErrorOptional( |
| + new Message (messageString, MessagePriority.BLOCKING_PROBLEM)); |
|
apavlov
2013/01/24 13:06:27
stray whitespace before '('
Peter Rybin
2013/01/24 14:08:22
Done.
|
| + } |
| + }); |
| } else { |
| return createErrorOptional(previewResult.errorMessages()); |
| } |
| @@ -345,7 +376,7 @@ class WizardLogicBuilder { |
| }); |
| updater.addConsumer(scope, warningValue); |
| updater.addSource(scope, warningValue); |
| - updater.addDependency(warningValue, previewValue); |
| + updater.addDependency(warningValue, previewRawResultValue); |
| // A finisher delegate source, that does not actually depend on most of the code above. |
| final ValueProcessor<? extends Optional<FinisherDelegate>> wizardFinisher = |